Spline

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Beispiel eines Splines mit 8 Knoten
Geflecht: Die Querstreben verhalten sich theoretisch wie Splines

Ein Spline n-ten Grades (auch Polynomzug) ist eine Funktion, die stückweise aus Polynomen höchstens n-ten Grades zusammengesetzt ist. Dabei werden an den Stellen, an denen zwei Polynomstücke zusammenstoßen (man spricht auch von Knoten), bestimmte Bedingungen gestellt, etwa dass der Spline (n-1)-mal stetig differenzierbar ist.

Handelt es sich bei dem Spline um eine stückweise lineare Funktion, so nennt man den Spline linear (es handelt sich dann um einen Polygonzug), analog gibt es quadratische, kubische usw. Splines.

Zu den Pionieren der Splines gehören Isaac Jacob Schoenberg (ab den 1940er Jahren), Paul de Faget de Casteljau, Pierre Bézier und Carl de Boor.

Allgemeines[Bearbeiten]

Der Begriff Spline wurde zuerst in einer englischen Veröffentlichung von Isaac Jacob Schoenberg im Jahr 1946 für glatte, harmonische, zusammengesetzte mathematische Kurven dritten Grades benutzt.

Splines werden vor allem zur Interpolation und Approximation benutzt. Durch die stückweise Definition sind Splines flexibler als Polynome und dennoch relativ einfach und glatt. Dadurch ergeben sich bei der Spline-Interpolation nicht die Nachteile, die durch die starke Oszillation von Polynomen höheren Grades und deren Unbeschränktheit bei der Polynominterpolation entstehen (Runges Phänomen). Splines lassen sich auch gut benutzen, um Kurven darzustellen. Hier finden sie Einsatz im CAD. Mathematisch analog lassen sich auf beide Weisen nicht nur Kurven, sondern auch Flächen beschreiben.

Wortherkunft: Der Begriff stammt aus dem Schiffbau: eine lange dünne Latte (Straklatte, englisch spline), die an einzelnen Punkten durch Molche fixiert wird, biegt sich genau wie ein kubischer Spline mit natürlicher Randbedingung. Dabei wird die Spannungsenergie minimal.

Kubische Splines[Bearbeiten]

Kubische Splines werden unter anderem zur Berechnung des Bahnverlaufes bei Achterbahnen verwendet, um ruckartige Beschleunigungswechsel für die Fahrgäste zu vermeiden. Kubische Splines finden weitere Anwendung bei der exakten Verlegung der Schienen bei Hochgeschwindigkeitsstrecken der Eisenbahn. Auch beim Entwurf von Kurven und Oberflächen (sogenannte „Freiformkurven und -flächen“), wie sie häufig im Schiff-, Flugzeug- und Automobilbau vorkommen, sind Splines von Bedeutung.

Splines eignen sich für solche Anwendungen, weil für jeden Polynomabschnitt Randbedingungen sowohl in Form von Punkten als auch in Form von Werten für die erste und zweite Ableitung (und in Abhängigkeit davon Steigung und Krümmung/Kurvenradius) vorgegeben werden können. Dadurch kann eine über den gesamten Kurvenverlauf stetige Krümmung erreicht werden. So werden Querbeschleunigungen beim Abfahren der Kurve immer allmählich aufgebaut bzw. an den Knotenpunkten vorgegebene Werte eingehalten.

B-Splines[Bearbeiten]

B-Spline ist die Kurzform von "Basis"-Spline. Wie auch der Raum der Polynome ist der Raum der stückweisen Polynome ein Vektorraum und hat eine Basis. Im Kontext numerischer Verfahren, wo Splines häufig eingesetzt werden, ist die Wahl der Basis entscheidend für eventuelle Rundungsfehler und damit für die praktische Einsetzbarkeit. Eine bestimmte Basis hat sich hier als am besten geeignet herausgestellt: sie ist numerisch stabil und erlaubt die Berechnung von Werten der Spline-Funktion mittels einer Drei-Term-Rekursion. Diese so genannten B-Spline-Basisfunktionen haben einen kompakten Träger, sie sind nur auf einem kleinen Intervall von Null verschieden. Änderungen der Koeffizienten wirken sich also nur lokal aus. Splines, die in dieser Basis dargestellt werden, nennt man B-Splines.

Definition[Bearbeiten]

Die B-Spline-Basisfunktionen N_{i,p,\tau}\ (i=0,\ldots,n-p-2) der Ordnung p mit Knotenvektor \tau = (\tau_0,\ldots,\tau_{n-1}) \quad (n\ge 2\,p) werden durch die Rekursionsformel von de Boor/Cox/Mansfield definiert:[1]

N_{i,0,\tau}(u) = \begin{cases} 1, & u\in\left[\tau_i,\tau_{i+1}\right[ \\ 0, & \mbox{sonst} \end{cases}

und

N_{i,p,\tau}(u) = \frac{u-\tau_{i}}{\tau_{i+p}-\tau_{i}}\,N_{i,p-1,\tau}(u) \;+\; \frac{\tau_{i+p+1}-u}{\tau_{i+p+1}-\tau_{i+1}}\,N_{i+1,p-1,\tau}(u) für p>0.

Die Elemente des Knotenvektors heißen auch Knotenpunkte (engl. knots) und müssen die Bedingungen \tau_{i}\le\tau_{i+1} und \tau_{i} < \tau_{i+p} erfüllen. Die Ordnung p einer B-Spline-Basisfunktion gibt den Grad für jedes stückweise definierte Polynom innerhalb einer Basis an. Sie ist um eins niedriger als die Anzahl benötigter Koeffizienten.

Eigenschaften:

Bemerkung:

Die Bedingungen an die Knotenpunkte \tau_i erlauben es, dass in der Rekursionsformel unter Umständen 0 als Nenner auftritt (nämlich wenn \tau_{i+p}=\tau_{i} bzw. \tau_{i+p+1}=\tau_{i+1} gilt). Allerdings ist dann die Funktion N_{i,p,\tau} bzw. N_{i+1,p,\tau} automatisch die Nullfunktion. Auf die entsprechende Fallunterscheidung wird hier verzichtet, man ignoriere die entsprechenden Summanden in diesen Fällen (ersetze sie durch 0). Dies entspricht auch dem Grenzverhalten für z. B. \tau_{i+p}\to\tau_{i}.

B-Spline-Kurve[Bearbeiten]

Eine Spline-Kurve, deren Darstellung auf B-Splines beruht, nennt man B-Spline-Kurve. Bestimmt wird die Kurve durch so genannte De-Boor-Punkte, mit denen sich das Aussehen der Kurve leicht steuern lässt: Die Kurve liegt immer in der konvexen Hülle der De-Boor-Punkte, wird also von ihnen eingeschlossen.

Eine B-Spline-Kurve C(u),\ u\in [\tau_{p},\tau_{n-p+1}] der Ordnung p mit Knotenvektor \tau (s. o.) und Kontrollpunkten P_i\ (i=1,\ldots,n-p) (auch De-Boor-Punkte genannt) wird definiert durch

C(u) = \sum_{i=1}^{n-p}\; P_i\,N_{i,p,\tau}(u).

Für Kurven in der Ebene sind die Kontrollpunkte 2-dimensional, für Kurven im Raum 3-dimensional.

Eigenschaften:

  • Lokalität: Der Kontrollpunkt P_i beeinflusst die Kurve nur im Intervall [\tau_{i},\tau_{i+p+1}]
  • Endpunkt-Interpolation: Es ist P_1 = C(\tau_{p}), falls der erste Knotenpunkt p-mal wiederholt wird und P_{n-p} = C(\tau_{n-p+1}), falls der letzte Knotenpunkt p-mal wiederholt wird.

Eine ähnliche Darstellung haben Bézierkurven. Diese basieren nicht auf der oben genannten Basis, sondern auf den Bernsteinpolynomen. Genau wie bei B-Spline-Kurven die De-Boor-Punkte gibt es hier die Bézier-Punkte, die das so genannte Kontrollpolygon bilden und mit denen man die Kurve leicht graphisch darstellen kann.

B-Spline-Fläche[Bearbeiten]

Eine B-Spline-Fläche der Ordnung p und q mit Knotenvektor \tau = (\tau_{1},\ldots,\tau_{n})\ (n\ge 2p) und \mu = (\mu_{1},\ldots,\mu_{m})\ (m\ge 2q) und Kontrollpunkten (bzw. De Boor Punkten) P_{ij} wird definiert durch

C(u,v) = \sum_{i=1}^{n-p} \sum_{j=1}^{m-q}\; P_{ij}\,N_{i,p,\tau}(u)\,N_{j,q,\mu}(v)

Die Fläche ist definiert über dem Rechteck [\tau_{p},\tau_{n-p+1}] \times [\mu_{q},\mu_{m-q+1}].

Eigenschaften:

  • Lokalität: Der Kontrollpunkt P_{ij} beeinflusst die Fläche nur im Rechteck [\tau_{i},\tau_{i+p}]\times [\mu_{j},\mu_{j+q}]
  • Endpunktinterpolation: Werden die ersten p Knotenpunkte in \tau auf den gleichen Wert gesetzt, die letzten p Knotenpunkte in \tau auf den gleichen Wert gesetzt, die ersten q Knotenpunkte in \mu auf den gleichen Wert gesetzt und die letzten q Knotenpunkte in \mu auf den gleichen Wert gesetzt, dann gilt die Endpunktinterpolation, d. h. P_{1,1}=C(\tau_p,\mu_q), P_{1,m-q}=C(\tau_p,\mu_{m-q+1}), P_{n-p,1}=C(\tau_{n-p+1},\mu_q) und P_{n-p,m-q}=C(\tau_{n-p+1},\mu_{m-q+1})

Weitere Varianten[Bearbeiten]

Neben den B-Splines gibt es weitere Varianten von Splines, beispielsweise den kubisch hermiteschen Spline. Weit verbreitet sind auch NURBS, da sie jegliche Kurvenform beschreiben können.

Literatur[Bearbeiten]

  • Carl de Boor: A practical guide to splines. Springer Verlag, New York 1978, ISBN 0-387-90356-9 und ISBN 3-540-90356-9 (Rev. Aufl. von 2001 ISBN 0-387-95366-3)
  • Gerald Farin: Curves and Surfaces for CAGD. A practical guide. 5. Aufl. Academic Press, San Diego 2002 ISBN 1-55860-737-4
  • Günther Nürnberger: Approximation by Spline Functions. Springer Verlag, 1989, ISBN 3-540-51618-2 und ISBN 0-387-51618-2
  • Hartmut Prautzsch, Wolfgang Böhm, Marco Paluszny: Bezier and B-Spline Techniques. Springer Verlag, Berlin 2001 ISBN 3-540-43761-4
  • David Salomon: Curves and Surfaces for Computer Graphics. 2006 Springer Science+Business Media, Inc.; ISBN 0-387-24196-5
  • Isaac Jacob Schoenberg: Contributions to the problem of approximation of equidistant data by analytic functions. Quart. Appl. Math., vol. 4, S. 45–99 und 112–141, 1946.

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/bspline-basis.html
  2. http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/bspline-derv.html