fit_bspline_curve — 3D 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"))

Verwendung

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.

Parameters

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.

Returns

tck : tuple

(t, c, k). An eval_bspline_curve übergeben.

Raises

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).

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)

• bspline_freeform — py -3.11 examples_3d/bspline_freeform.py

Typkompatible Folge-Operatoren (nehmen bspline_curve als Eingabe)

fuse_to_voxel · eval_bspline_curve

Gleiche Kategorie (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.