freeform oppoints → bspline_curveimport 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) と違い多価 (折り返し・ループ)な形も表せる。
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 で自動。
tck : tuple
(t, c, k)。eval_bspline_curve に渡す。
ValueError 点数が 2 未満、次元不整合、非有限値、または重複/縮退で splprep が 曲線を返せない場合。
補足:
smooth=0.0 は補間(全点通過)。曲面側の既定(点数からの自動値)と違うので、ノイズ点列は明示的に smooth を与える。パラメータ u は splprep の既定(弦長に比例して [0,1] に正規化)。k >= m のとき m-1 に無言で下げる(2 点なら直線)。splprep が失敗し ValueError になる。前段で重複を除くか resample_uniform で等間隔化する。[t, c, k] の list(c は D 本の係数配列のリスト)。eval_bspline_curve に渡す。閉曲線としては扱わない(端点は開いたまま)。py -3.11 examples_3d/bspline_freeform.pybspline_curve を入力に取れる)fuse_to_voxel · eval_bspline_curve
freeform)fit_bspline_surface · eval_bspline_surface · surface_residual · eval_bspline_curve
Provenance: bspline_surf.py — 3D operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.