curve oppoints → frameimport 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’’ を取り、
B = T × N を各点で計算する。r’’ の T 直交成分の向きは再パラメータ化に不変なので、点間隔が 滑らかに変わる限り index パラメータで正しい向きが出る。
np.gradient が ValueError を出す。形状検証はそれ以外に無い。resample_uniform)や平滑
(fit_spline_curve)を先に掛けると安定する。曲率・捩率の数値そのものは curvature_torsion、弧長は arc_length。
py -3.11 examples_3d/space_curve.pypy -3.11 examples_3d/torus_knot_curve.pyframe を入力に取れる)curve)curvature_torsion · arc_length · resample_uniform · fit_spline_curve
Provenance: curve3d.py — 3D operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.