freeform op• 데이터 종류: points → bspline_curve
• 호출: import fullseye as fs; fs.ledger.fit_bspline_curve(points, smooth=0.0, k=3, nest=None)(구현을 직접 호출하려면 import bspline_surf; bspline_surf.fit_bspline_curve(points, smooth=0.0, k=3, nest=None), 원장에서 가져오려면 ops3d.get("fit_bspline_curve"))
순서 있는 점열 (M,D) 에 B 스플라인 곡선을 적합(splprep, 매개변수).
> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.
シーム/エッジ/計測プローブ軌跡など「並び順が意味を持つ」点列を滑らかな
パラメトリック曲線 r(u), u∈[0,1] として復元する。z=f(x,y) と違い多価
(折り返し・ループ)な形も表せる。
Parameters
----------
points : array_like, shape (M, D)
順序付き頂点。D=3 が典型(3D 曲線)だが 2D 以上を許容。
smooth : float
平滑化係数 s。0.0 で全点通過(補間)、大きいほど滑らか。
k : int
次数(既定 3=三次)。点数が k+1 未満なら自動で下げる。
nest : int or None
節点数の上限(splprep へそのまま渡す)。None で自動。
Returns
-------
tck : tuple
`(t, c, k)`。eval_bspline_curve に渡す。
Raises
------
ValueError
点数が 2 未満、次元不整合、非有限値、または重複/縮退で splprep が
曲線を返せない場合。
補足:
• 既定 `smooth=0.0 は補間(全点通過)。曲面側の既定(点数からの自動値)と違うので、ノイズ点列は明示的に smooth を与える。パラメータ u は splprep` の既定(弦長に比例して [0,1] に正規化)。
• 次数 k は `k >= m のとき m-1` に無言で下げる(2 点なら直線)。
• 連続する重複点があると `splprep が失敗し ValueError になる。前段で重複を除くか resample_uniform` で等間隔化する。
• 返す tck は `[t, c, k] の list(c は D 本の係数配列のリスト)。eval_bspline_curve` に渡す。閉曲線としては扱わない(端点は開いたまま)。
• 決定論的(乱数なし)。
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• bspline_freeform — py -3.11 examples_3d/bspline_freeform.py
bspline_curve 를 입력으로 받는 것)fuse_to_voxel · eval_bspline_curve
freeform)fit_bspline_surface · eval_bspline_surface · surface_residual · eval_bspline_curve
*Provenance: bspline_surf.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.