freeform op• Datenarten: points → bspline_curve
• Aufruf: import fullseye as fs; fs.ledger.fit_bspline_curve(points, smooth=0.0, k=3, nest=None) (die Implementierung direkt: import bspline_surf; bspline_surf.fit_bspline_curve(points, smooth=0.0, k=3, nest=None); aus dem Register: ops3d.get("fit_bspline_curve"))
Passt eine B-Spline-Kurve an eine geordnete Punktfolge (M,D) an (splprep, parametrisch).
Rekonstruiert eine Punktfolge, deren "Reihenfolge eine Bedeutung hat", etwa eine Naht, eine Kante oder eine Messtaster-Trajektorie, als glatte parametrische Kurve r(u), u∈[0,1]. Anders als z=f(x,y) lassen sich auch mehrdeutige Formen (Rückfaltungen, Schleifen) darstellen.
points : array_like, shape (M, D)
Geordnete Eckpunkte. D=3 ist typisch (3D-Kurve), aber 2D oder mehr ist erlaubt.
smooth : float
Glättungsfaktor s. 0.0 geht durch alle Punkte (Interpolation), größer ist glatter.
k : int
Grad (Standard 3=kubisch). Ist die Punktzahl kleiner als k+1, wird er automatisch gesenkt.
nest : int or None
Obergrenze der Knotenzahl (unverändert an splprep übergeben). None bedeutet automatisch.
tck : tuple
(t, c, k). An eval_bspline_curve übergeben.
ValueError
Bei weniger als 2 Punkten, inkonsistenten Dimensionen, nicht endlichen Werten oder wenn splprep wegen Duplikaten/Entartung
keine Kurve liefern kann.
Ergänzung:
• Der Standard smooth=0.0 interpoliert (geht durch alle Punkte). Das unterscheidet sich vom Standard auf der Flächenseite (automatischer Wert aus der Punktzahl), daher für verrauschte Punktfolgen smooth explizit angeben. Der Parameter u ist der Standard von splprep (proportional zur Sehnenlänge, auf [0,1] normiert).
• Der Grad k wird bei k >= m stillschweigend auf m-1 gesenkt (bei 2 Punkten eine Gerade).
• Aufeinanderfolgende doppelte Punkte lassen splprep scheitern, es entsteht ValueError. Duplikate vorher entfernen oder mit resample_uniform äquidistant machen.
• Das zurückgegebene tck ist eine list [t, c, k] (c ist eine Liste von D Koeffizientenarrays). An eval_bspline_curve übergeben. Es wird nicht als geschlossene Kurve behandelt (die Endpunkte bleiben offen).
• Deterministisch (kein Zufall).
• 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.
• bspline_freeform — py -3.11 examples_3d/bspline_freeform.py
bspline_curve als Eingabe)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. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.