Bézier-Kurve

Bézier-Kurve
Kubische Bézierkurve

In der numerischen Mathematik ist die Bézierkurve [be'zje...] eine parametrisch modellierte Kurve, die ein wichtiges Werkzeug für Vektorgrafiken darstellt.

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

Inhaltsverzeichnis

Definition

Konstruktion einer kubischen Bézierkurve

Eine Bézierkurve n-ten Grades zu gegebenen n+1 Kontroll- oder Bézierpunkten (P_i)_{i=0}^n, die das so genannte Kontrollpolygon bilden, ist für t \in [0,1] definiert als

C(t)= \sum_{i=0}^n B_{i,n}(t) P_i ,

wobei B_{i,n}(t)= \binom n i t^i (1-t)^{n-i} das i-te Bernsteinpolynom n-ten Grades ist. Diese bilden eine Basis des Vektorraums der Polynome und erfüllen die Rekursionsformel: B_{i,n}(t) = (1-t) \cdot B_{i,n-1}(t) + t \cdot B_{i-1,n-1}(t) mit Bi,n: = 0 für i < 0 oder i > n, sowie B0,0: = 1. Dies erlaubt eine numerisch stabile rekursive Berechnung der Werte einer Bézierkurve mit Hilfe des de Casteljau-Algorithmus:

\begin{align}C_i^0(t) &amp;amp;amp;:= P_i \\
C_i^j(t) &amp;amp;amp; := (1-t)C_i^{j-1}(t) +  tC_{i+1}^{j-1}(t) \begin{cases} j=1,...,n \\
                                                                   i=0,...,n-j. \end{cases}\end{align}

Eigenschaften

Bézierkurven (rot) der Grade 1, 2 und 3 und zugehörige Kontrollpolygone (grau). Von links nach rechts wurde jeweils ein Kontrollpunkt (blau) hinzugefügt. Man erkennt wie die Kurve bei Einfügen/Verändern eines Kontrollpunkts „oszilliert“, d. h. sich komplett verändert.
C'(0) =n \cdot (P_1 - P_0)
C'(1) = n \cdot (P_n - P_{n-1})
  • Eine Gerade schneidet eine Bézierkurve höchstens so oft, wie sie ihr Kontrollpolygon schneidet (die Kurve 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 vorherigen Stützpunkten ergeben. Dabei ist der Trennungspunkt vom Parameter t abhängig. Aus der Abbildung für die Konstruktion einer Bézierkurve ist ersichtlich, dass sich die neue erste Kurve aus den Kontrollpunkten P0,Q0,R0,B zusammensetzt, während die zweite Kurve aus den Punkten B,R1,Q2,P3 besteht. Diese Eigenschaft kann genutzt werden um eine Kurve rekursiv mit Hilfe des De Casteljau-Algorithmus durch Geraden anzunähern.

Als verallgemeinerte Form der Bézierkurve kann die Bézierfläche gesehen werden. Eine Bézierfläche (n,m)-ter Ordnung ist eine Fläche der Form

C(u, v) = \sum_{i=0}^n \sum_{j=0}^m P_{i,j} B_{i,n}(u) B_{j,m}(v), mit den Kontrollpunkten Pi,j und den Bernsteinpolynomen Bi,n(u) und Bj,m(v).

Eine Bézierfläche kann also durch zwei zueinander orthogonale Bézierkurven beschrieben werden.

Anwendung

In der Computergrafik werden Bézierkurven zur Definition von Kurven und Flächen im Rahmen von CAD, bei Vektorgrafiken (z. B. SVG) und zur Beschreibung von Schriften (z. B. Postscript Type1, TrueType und CFF-Opentype) verwendet.

Beispiele

Konstruktion einer linearen Bézierkurven

Lineare Bézierkurven (n=1)

Zwei Kontrollpunkte P0 und P1 bestimmen eine lineare Bézierkurve, die einer Geraden zwischen diesen beiden Punkten entspricht. Die Kurve wird angegeben durch

\begin{align}
      C(t) \ &amp;amp;amp; =\ \sum_{i=0}^1 t^i (1-t)^{1-i} P_i \\
           \ &amp;amp;amp; =\ (1-t)P_0 + t P_1 \mbox{ , } t \in [0,1]
\end{align}.

Quadratische Bézierkurven (n=2)

Konstruktion einer quadratischen Bézierkurven

Eine quadratische Bézierkurve ist der Pfad, der durch die Funktion C(t) für die Punkte P0, P1 und P2 verfolgt wird:

\begin{align}
      C(t) \ &amp;amp;amp; =\ \sum_{i=0}^2 \binom 2 i t^i (1-t)^{2-i} P_i \\
           \ &amp;amp;amp; =\ (1 - t)^{2}P_0 + 2t(1 - t)P_1 + t^{2}P_2 \mbox{ , } t \in [0,1]
\end{align}.

Kubische Bézierkurven (n=3)

Konstruktion einer kubischen Bézierkurven

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.

Vier Punkte (P0, P1, P2 und P3) bestimmen eine kubische Bézierkurve. Die Kurve beginnt bei P0 und geht in Richtung P1 und dann aus Richtung P2 zu P3. Im Allgemeinen geht die Kurve nicht durch P1 und P2 – diese Punkte dienen nur der Richtung, wobei P1 die Richtung bestimmt, in welche die Kurve in P0 geht. P2 legt die Richtung fest, aus welcher die Kurve zu P3 geht. Der Abstand zwischen P0 und P1 und der Abstand von P2 und P3 bestimmen, „wie weit“ sich die Kurve in Richtung der Kontrollpunkte P1 und P2 bewegt, bevor sie in Richtung P3 läuft.

\begin{align} 
   C(t) \ &amp;amp;amp; = \ \sum_{i=0}^3 \binom 3 i t^i (1-t)^{3-i} P_i \\
          &amp;amp;amp; = \ (1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+t^3P_3 \\
          &amp;amp;amp; = \ (-P_0 + 3P_1 -3P_2 + P_3) t^3 + (3P_0 - 6P_1 + 3P_2) t^2 + (-3P_0 + 3P_1) t + P_0, t \in [0,1]
\end{align}.

Rationale Bézierkurve

Rationale Bezierkurve dritten Grades mit unterschiedlicher Gewichtung der Kontrollpunkte

Rationale Bezierkurven können vereinfacht als Bezierkurven betrachtet werden, deren Kontrollpunkte mit Gewichten/Anziehungskraft versehen sind und die damit den Kurvenverlauf in ihre Richtung hin beeinflussen.

Die Bezeichnung als rationale Bezierkurven ergibt sich wohl aus der häufig gewählten Formeldarstellung

C(t) \ = \ \frac{\sum_{i=0}^n w_i B_{i,n}(t) P_i}{\sum_{i=0}^n w_i B_{i,n}(t)}.

Die Darstellung als Quotient, sowie die zu einfache Vorstellung der Funktion der Gewichte, können aber leicht zu einem falschen Verständnis der Zusammenhänge führen.

Genese

Die Multiplikation der Kontrollpunkte (Ortsvektoren) mit ihren zugehörigen Gewichten, wie sie in obiger Formeldarstellung erkennbar ist, entspricht nicht einer einfachen Skalierung der Ortsvektoren, sondern einer Koordinatentransformation in den Projektiven Raum – Ergebnis der Multiplikation ist also der Ortsvektor der in homogenen Koordinaten dargestellt ist. Nach der Transformation in den Projektiven Raum wird die Kurve nach dem normalen Bildungsgesetz erzeugt und anschließend wieder in den Ursprungsraum zurück transformiert, was praktisch durch das Teilen erfolgt.

Projektiver Raum und homogene Koordinaten

Die Projektion der Kontrollpunkte in den Projektiven Raum mittels ihrer Gewichte verändert im Allgemeinen (also wenn nicht alle Gewichte gleich 1 sind) die Lage der Kontrollpunkte zueinander, verzerrt also das Kontrollpolygon. Diese Verzerrung wirkt sich nun so aus, dass die Kurve sich in der zurücktransformierten Darstellung den Punkten mit höherer Gewichtung stärker nähert (Visualisierung folgt).

Weblinks

Drei Stützpunkte

Vier Stützpunkte

Beliebig viele Stützpunkte

Rationale Bezierkurve

Literatur

  • Gerald Farin: Curves and Surfaces for CAGD. A practical guide. 5. Aufl. Academic Press, San Diego 2002, ISBN 1-55860-737-4
  • David Salomon: Curves and Surfaces for Computer Graphics. Springer Science+Business Media, Inc., 2006, ISBN 0-387-24196-5
  • Boaswan Dzung Wong: Bézierkurven: gezeichnet und gerechnet. Orell Füssli Verlag, Zürich 2003, ISBN 3-280-04021-3

Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Bézier-Kurve — I Bézier Kurve   [be zje , nach P. E. Bézier], Kurventyp, der beliebige Krümmungen einfach darstellen kann und mithilfe von Kontrollpunkten leicht handhabbar ist. Durch die Scheitel und Endpunkte einer Bézier Kurve werden Tangenten geführt, an… …   Universal-Lexikon

  • Bezier-Kurve — Kubische Bézierkurve In der numerischen Mathematik ist die Bézierkurve [be zje...] eine parametrisch modellierte Kurve, die ein wichtiges Werkzeug für Vektorgrafiken darstellt. Sie wurde Anfang der 1960er Jahre unabhängig voneinander von Pierre… …   Deutsch Wikipedia

  • Bézier-Interpolation — Bézier Interpolation,   Bézier Kurve …   Universal-Lexikon

  • B-Spline-Kurve — Beispiel eines Splines mit 8 Knoten Geflecht: Die Querstreben verhalten sich theoretisch wie Splines Ein Spline n ten Grades ist eine Funktion, die stückweise aus Poly …   Deutsch Wikipedia

  • Spline-Kurve — Spline Kurve,   in Grafik und CAD Programmen benutzte Kurven, die mithilfe mathematischer Funktionen (Splines) berechnet werden. Auf diese Weise lassen sich gegebene Punkte durch weiche gerundete Linien verbinden oder bei Animationen flüssig… …   Universal-Lexikon

  • B-Spline — Beispiel eines Splines mit 8 Knoten Geflecht: Die Querstreben verhalten sich theoretisch wie Splines Ein Spline n ten Grades ist eine Funktion, die stückweise aus Poly …   Deutsch Wikipedia

  • B-Spline-Fläche — Beispiel eines Splines mit 8 Knoten Geflecht: Die Querstreben verhalten sich theoretisch wie Splines Ein Spline n ten Grades ist eine Funktion, die stückweise aus Poly …   Deutsch Wikipedia

  • B-Splines — Beispiel eines Splines mit 8 Knoten Geflecht: Die Querstreben verhalten sich theoretisch wie Splines Ein Spline n ten Grades ist eine Funktion, die stückweise aus Poly …   Deutsch Wikipedia

  • Kubischer Spline — Beispiel eines Splines mit 8 Knoten Geflecht: Die Querstreben verhalten sich theoretisch wie Splines Ein Spline n ten Grades ist eine Funktion, die stückweise aus Poly …   Deutsch Wikipedia

  • Splines — Beispiel eines Splines mit 8 Knoten Geflecht: Die Querstreben verhalten sich theoretisch wie Splines Ein Spline n ten Grades ist eine Funktion, die stückweise aus Po …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”