300px|mini|Bézier-Kurve 3. Grades und ihr Kontrollpolygon mini|hochkant=1.8|Bézierkurven der Grade 1, 2 und 3 (rot) und die zugehörigen Kontrollpolygone (grau). Von links nach rechts wurde jeweils ein weiterer Kontrollpunkt (blau) hinzugefügt. Man erkennt, wie die Kurve bei Einfügen/Verändern eines Kontrollpunkts ihre Richtung und/oder Krümmung variiert. mini|Bézierkurven 1. 2. 3. Ordnung in Geogebra – siehe auch interaktives Geogebra-Applet. Bézierkurve [] bezeichnet eine Art der Parametrisierung von polynomialen Funktionen, die ein zentrales Werkzeug bei der Erzeugung von Freiformkurven und -flächen ist. Im Sprachgebrauch wird die Methode dabei mit den durch sie beschriebenen Kurven gleichgesetzt.
In der Computergrafik finden Bézierkurven wegen ihrer optischen Eleganz und der verhältnismäßig leichten mathematischen Handhabbarkeit häufig Anwendung. Sie werden zur Definition von Kurven und Flächen in Vektorgrafiken genutzt. Mögliche Anwendungsfälle finden sich z. B. im Computer Aided Design, bei der Erstellung von Illustrationen (siehe z. B. SVG) oder der Beschreibung von Schrifttypen (z. B. Postscript, Type1, TrueType und CFF-OpenType).
Die Bézierkurve wurde Anfang der 1960er Jahre unabhängig voneinander von Pierre Bézier bei Renault und Paul de Casteljau bei Citroën für Computer-Aided Design (computerunterstützte Konstruktion) entwickelt. Paul de Casteljau gelang zwar die Entdeckung früher, Citroën hielt seine Forschungen jedoch bis zum Ende der 1960er Jahre als Betriebsgeheimnis zurück.
Verallgemeinerungen des Konzepts der Bézierkurven führen zu den Bézierflächen.
Motivation, Definition Numerisch einfache Kurven in der Ebene sind solche, die mit Hilfe einer Parameterdarstellung beschrieben werden, wobei und Polynome in sind. Ist ,
und setzt man , so lässt sich die Kurve übersichtlicher durch
beschreiben.
Im Allgemeinen lässt sich direkt aus den Koeffizienten-Punkten nur wenig über den Kurvenverlauf aussagen. Lediglich (Anfangspunkt der Kurve) und (Tangentialvektor der Kurve an ) haben konkrete geometrische Bedeutungen. Dies ändert sich, wenn man die Polynome nicht in der Monom-Basis , sondern in der folgenden Bernsteinbasis darstellt:
Es sei nun festgewählt und die Vektoren beschreiben ein ebenes oder räumliches Polygon. Dann heißt die Darstellung
eine BézierkurveFarin, S. 37Hoschek&Lasser, S. 120 vom (maximalen) Grad . Die Punkte nennt man Kontrollpunkte der Bézierkurve.
Eigenschaften der Bernsteinpolynome: mini|Bernsteinpolynome
für für Das Bernsteinpolynom hat genau ein Maximum und zwar an der Stelle D. h. eine leichte Veränderung des Punktes hat nur in der Umgebung von eine wesentliche Veränderung der Kurve zur Folge.
Eigenschaften einer Bézierkurve: ist der Anfangs-, der Endpunkt ist die Richtung der Tangente im Punkt ist die Richtung der Tangente im Punkt Das Polygon gibt einen ungefähren Verlauf der Kurve an.
Weitere Eigenschaften der Bernsteinbasis Für Untersuchungen von Bézierkurven sind die folgenden EigenschaftenFarin S. 38 nützlich:
Beziehung zwischen der Bernstein- und der Monom-Basis (MB) Rekursion (R) Skalierung (S) Ableitung (A) (Man beachte, dass ist.) Produkt (P)
Weitere Eigenschaften einer Bézierkurve
In der LiteraturFarin S. 40 werden noch weitere Eigenschaften einer Bézierkurve aufgelistet:
Die Kurve liegt innerhalb der konvexen Hülle des Kontrollpolygons. Dies folgt daraus, dass die Bernsteinpolynome vom Grad eine Zerlegung der Eins sind:
Die ersten Summanden des Taylorpolynoms bei bzw. bei lauten für :
Eine Gerade schneidet eine Bézierkurve höchstens so oft, wie sie ihr Kontrollpolygon schneidet (die Kurve ist variationsreduzierend, bzw. hat eine beschränkte Schwankung). Eine affine Transformation (Verschiebung, Skalierung, Rotation, Scherung) kann auf die Bézierkurve durch Transformation des Kontrollpolygons angewendet werden („affine Invarianz“). Liegen alle Kontrollpunkte auf einer Geraden, so wird die Bézierkurve zu einer Strecke (Vorteil gegenüber der Polynominterpolation). Der Einfluss eines Kontrollpunktes auf die Kurve ist global. Das heißt: Verschiebt man einen Punkt, verändert sich die gesamte Kurve. Daher verwendet man in der Praxis meist Splines, zusammengesetzte Kurven festen Grades, die stetig ineinander übergehen. Eine Bézierkurve kann immer in zwei Bézierkurven gleicher Ordnung geteilt werden, wobei sich die neuen Kontrollpunkte aus den alten mit Hilfe des De-Casteljau-Algorithmus ergeben (s. Abschnitt Teilung einer Bézierkurve).
Der De-Casteljau-Algorithmus
Höhere Potenzen von auszurechnen ist numerisch instabil. Der folgende Algorithmus führt deshalb die Berechnung eines Kurvenpunktes auf wiederholte lineare Interpolation zurück. In jedem Schritt wird mittels linearer Interpolation ein neues um 1 kürzeres Polygon berechnet (s. Bild). Bei der letzten Interpolation entsteht schließlich der Kurvenpunkt: 300px|mini|De-Casteljau-Algorithmus für eine Bézier-Kurve 3. Grades Für das Polygon im (oder ) und einem definiert man rekursiv für jedes das Polygon erzeugt. Dabei sei .
Das Polygon der Stufe ist identisch mit dem Ausgangspolygon, das Polygon der Stufe ist ein Punkt, der Kurvenpunkt.
Aus der Rekursionseigenschaft (R) der Bernsteinpolynome folgt
für (Beweis mit Hilfe vollständiger Induktion über r.) Also ist
die Bézierkurve mit dem Kontrollpolygon . Diese Methode, einen Punkt der Bézierkurve durch lineare Interpolationen zu bestimmen, heißt De-Casteljau-Algorithmus.
Wie für ein mit Hilfe des Casteljau-Algorithmus aus dem Kontrollpolygon die Zwischenpolygone und schließlich der Punkt der Bézierkurve entsteht, zeigt die Abbildung für . Die neuen Punkte teilen immer die alten Strecken, auf denen sie liegen, im gleichen Verhältnis .
Bézierkurven bis zum dritten Grad 200px|mini|Lineare Bézierkurve Lineare Bézierkurven :
Zwei Kontrollpunkte und bestimmen eine gerade Strecke zwischen diesen beiden Punkten. Der Verlauf dieser linearen Bézier„kurve“ wird beschrieben durch
Quadratische Bézierkurven : 250px|mini|Quadratische Bézierkurve mit Casteljau-Algorithmus
Eine quadratische Bézierkurve ist der Pfad, der durch die Funktion für die Punkte , und beschrieben wird:
Die letzte Zeile zeigt: Eine quadratische Bézierkurve ist eine Parabel.
Mit Hilfe des De-Casteljau-Algorithmus ausgedrückt:
Kubische Bézierkurven : 300px|mini|Kubische Bézierkurve mit Casteljau-Algorithmus
Kubische Bézierkurven sind in der Praxis von großer Bedeutung, da sowohl B-Spline-Kurven als auch NURBS stückweise in kubische Bézierkurven umgewandelt werden, um dann effizient mit dem De-Casteljau-Algorithmus gezeichnet zu werden. Selbiges gilt für hermitesche Splines, die in ihrer kubischen Form vor allem in der Computeranimation zur Interpolation zwischen Keyframes verwendet werden.
Mit Hilfe des De-Casteljau-Algorithmus ausgedrückt:
Vergleich der Kurvendarstellungen 450px|mini|Vergleich zwischen KurvendarstellungenPolynomiale Kurven (d. h. die Koordinaten sind Polynome bzgl. ) lassen sich in der Monom-Basis, der Bernsteinbasis und mit Hilfe des De-Casteljau-Algorithmus (fortgesetzte lineare Interpolation) beschreiben. Da die Koeffizientenpunkte der Monom-Basis nicht viel über den Kurvenverlauf aussagen, entstanden die Darstellungen mit der Bernstein-Basis (Bézier-Kurven) und mit dem De-Casteljau-Algorithmus. Die letzten beiden haben allerdings auch Vor- und Nachteile. Der De-Casteljau-Algorithmus hat gegenüber der Bézierdarstellung bei der Berechnung der Punkte (Numerik) Vorteile. Bézierkurven lassen sich dafür durch die vielen formalen Eigenschaften (s. o.) der Bernstein-Polynome leichter theoretisch (z. B. Krümmung) untersuchen. Der numerische Nachteil der Bézier-Kurven (Auswertung der Bernstein-Polynome) lässt sich durch eine dem Horner-Schema ähnlichen Methode ausgleichen:Farin: S. 48
function bezier_comp(degree: integer; coeff: r_array; t: real): real; {Berechnet eine Komponente einer Bezier-Kurve. (Aus FARIN: Curves and Surfaces...)} var i, n_choose_i: integer; fact, t1, aux: real; begin t1 := 1 - t; fact := 1; n_choose_i := 1; aux := coeff * t1; for i := 1 to degree - 1 do begin fact := fact * t; n_choose_i := n_choose_i * (degree - i + 1) div i; aux := (aux + fact * n_choose_i * coeff[i]) * t1; end; aux := aux + fact * t * coeff[degree]; bezier_comp := aux; end; {bezier_comp}
Ableitungen einer Bézier-Kurve Mit Hilfe der Ableitungen der Bernsteinpolynome ergibt sich für die 1. Ableitung der Bézierkurve :
Lässt man die Tangentenvektoren alle im Nullpunkt des Koordinatensystems beginnen, so beschreiben sie eine weitere Bézierkurve mit den Kontrollpunkten .
Speziell gilt: und
Um höhere Ableitungen übersichtlich schreiben zu können, führt man folgenden Differenzenoperator ein:Farin: S. 44
Es ist
Die -te Ableitung der Bézierkurve lässt sich jetzt wie folgt schreiben:
Speziell für und erhält man
und
Graderhöhung einer Bézierkurve
Eine wichtige Manipulation der Darstellung einer vorgegebenen Bézierkurve ist die sog. Graderhöhung. Sie ist vergleichbar mit dem Anfügen von Termen an ein Polynom . Dabei ändert sich das Polynom nicht und der (scheinbare) Grad wird erhöht. Analog stellt man eine fest vorgegebene Bézierkurve in der Form mit geeigneten neuen Kontrollpunkten dar. Um die neuen Kontrollpunkte zu bestimmen, multipliziert man die ursprüngliche Darstellung mit dem Faktor :
Die neuen Kontrollpunkte sind also:Farin: S. 51
700px|mini|links|Graderhöhungen einer Bézier-Kurve: Kontrollpolygone bei ein-, zwei- und 10-maliger Graderhöhung
Wesentliche Eigenschaften der Graderhöhung sind: Wiederholte Graderhöhung führt zu einer Approximation der Bézierkurve durch das Kontrollpolygon. Die größere Anzahl von Kontrollpunkten bietet mehr Freiheitsgrade, die Kurve zu verändern. Mehrere Bézierkurven lassen sich auf einen einheitlichen Grad bringen. Dies ist wichtig bei Tensorprodukt-Bézierflächen. Damit lassen sich auch dann quadratische Bézierkurven als kubische darstellen, falls ein Vektorzeichenprogramm (z. B. Inkscape) bzw. eine Grafikbibliothek (z. B. Cairo) nur kubische unterstützt.
Teilung einer Bézierkurve 300px|mini|Zerlegung einer Bézierkurve
Eine Bézierkurve ist normalerweise definiert für . Sei nun . Dann ist mit ein Teil der gegebenen Bézierkurve. Es soll nun die Teilkurve als Bézierkurve mit vom (selben) Grad mit geeigneten Kontrollpunkten dargestellt werden. Setzt man , so muss die folgende Gleichung erfüllt sein: für
Dies gilt fürFarin S. 87Hoschek&Lasser S. 128 (s. Casteljau-Alg. und Abbildung) Denn
wegen
(s. Eigensch. (S) der Bernst.-Pol.)
Der restliche Bogen ist die Bézierkurve mit den Kontrollpunkten (s. Abbildung)
Rationale Bézierkurven
Rationale Kurven und projektive Kurven Bézierkurven sind parametrisierte Kurven, deren Parameterdarstellungen nur Polynome verwenden. Leider lassen sich so wichtige und geometrisch einfache Kurven wie Kreise nicht durch polynomiale Parameterdarstellungen beschreiben. Dieser Nachteil ist u. a. das Motiv für die Erweiterung der als Parameterfunktionen zulässigen Funktionen auf rationale Funktionen. Denn jeder Kegelschnitt hat eine rationale Darstellung. Da eine Kurve mit einer rationalen Darstellung
wobei die Funktionen und Polynome sind, in homogenen Koordinaten die polynomiale Darstellung
besitzt, lassen sich ebene Kurven mit rationalen Koeffizientenfunktionen als Zentralprojektion einer Bézierkurve im auf die Einbettungsebene auffassen.
Die analoge Aussage gilt für Kurven im . Sie lassen sich als Zentralprojektion einer Bézierkurve im auf den Einbettungsraum auffassen. Damit lassen sich die Vorteile der Bézier-Darstellung einer polynomialen Kurve auch für rationale Kurven nutzen.
300px|mini|Rationale Bézierkurve (rot) als Projektion einer gewöhnlichen räumlichen Bézierkurve (blau). Die Kontrollpunkte sind alle eigentlich, da keiner der Kontrollpunkte in der --Ebene liegt.
Ebene rationale Bézierkurven
Es sei nun festgewählt und die Vektoren beschreiben ein Polygon im