fit_bspline_curve — 3D 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。不作為封閉曲線處理(端點保持開放)。

• 決定性(無亂數)。

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 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 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.