frenet_frame — 3D curve op

• Datenarten: points → frame

• Aufruf: import fullseye as fs; fs.ledger.frenet_frame(curve) (die Implementierung direkt: import curve3d; curve3d.frenet_frame(curve); aus dem Register: ops3d.get("frenet_frame"))

Verwendung

Das Frenet-Dreibein (Tangente T, Hauptnormale N, Binormale B) an jedem Punkt. → (T, N, B), je (Npts,3) Einheitsvektoren.

Leitet die geordnete Punktfolge (N,3) über den Index-Parameter mit np.gradient ab (intern zentrale Differenzen, an beiden Enden einseitige Differenzen), erhält r', r'' und

• T = r' / ‖r'‖

• N = (r'' − (r''·T) T) / ‖…‖ (die zu T orthogonale Komponente von r'' = die Richtung zum Krümmungsmittelpunkt)

• B = T × N

wird an jedem Punkt berechnet. Die Richtung der zu T orthogonalen Komponente von r'' ist invariant gegenüber Umparametrisierung; solange sich der Punktabstand glatt ändert, liefert der Index-Parameter die richtige Richtung.

• Zum Nenner wird nur der Absolutwert 1e-12 addiert, Stellen, die sich nicht normieren lassen, werden nicht einheitslang. Auf geraden Abschnitten (r'' ∥ T oder 0) werden N und B nahezu Nullvektoren, und vor und nach einem Wendepunkt kehrt sich die Richtung von N um. Die Garantie "Einheitsvektor" gilt dort nicht.

• Bei einer Folge mit N<2 löst np.gradient ValueError aus. Eine andere Formprüfung gibt es nicht.

• Die 2 Punkte an beiden Enden nutzen einseitige Differenzen, daher sinkt die Genauigkeit. Vorheriges Äquidistantmachen (resample_uniform) oder Glätten (fit_spline_curve) stabilisiert das Ergebnis.

Die Zahlenwerte von Krümmung und Torsion selbst liefert curvature_torsion, die Bogenlänge arc_length.

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• space_curve — py -3.11 examples_3d/space_curve.py

• torus_knot_curve — py -3.11 examples_3d/torus_knot_curve.py

Typkompatible Folge-Operatoren (nehmen frame als Eingabe)

fuse_to_voxel

Gleiche Kategorie (curve)

curvature_torsion · arc_length · resample_uniform · fit_spline_curve


*Provenance: curve3d.py — 3D Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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