curve op• 資料種類:points → frame
• 呼叫: import fullseye as fs; fs.ledger.frenet_frame(curve)(要直接呼叫實作,import curve3d; curve3d.frenet_frame(curve);從台帳取用則 ops3d.get("frenet_frame"))
各點的 Frenet 標架(切線 T,主法線 N,副法線 B)。→ (T, N, B),各為 (Npts,3) 單位向量。
將有序點列 (N,3) 以 index 參數用 np.gradient(內部為中心差分,兩端為單側差分)求導得到 r', r'',
• T = r' / ‖r'‖
• N = (r'' − (r''·T) T) / ‖…‖(r'' 的 T 正交分量 = 指向曲率中心的方向)
• B = T × N
在各點計算上述量。r'' 的 T 正交分量的方向對重新參數化不變,因此只要點間距平滑變化,用 index 參數也能得到正確方向。
• 分母只加上絕對值 1e-12,無法完全正規化的位置不會成為單位長度。在直線區間(r'' ∥ T 或 0)中 N、B 幾乎為零向量,在反曲點前後 N 的方向會反轉。「單位向量」的保證在那裡不成立。
• N<2 的點列會由 np.gradient 拋出 ValueError。除此之外沒有形狀檢驗。
• 兩端 2 點為單側差分,精度下降。先進行等間距化(resample_uniform)或平滑(fit_spline_curve)會更穩定。
曲率、撓率的數值本身用 curvature_torsion,弧長用 arc_length。
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• space_curve — py -3.11 examples_3d/space_curve.py
• torus_knot_curve — py -3.11 examples_3d/torus_knot_curve.py
frame 作為輸入)curve)curvature_torsion · arc_length · resample_uniform · fit_spline_curve
*Provenance: curve3d.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.