Konstruktion von de Casteljau · Bernstein-Gewichte

Bézierkurve

Eine Bézierkurve entsteht, indem du auf jeder Seite eines Polygons denselben Anteil t abträgst, dann auf jeder Seite des neuen, kürzeren Polygons, bis nur ein Punkt übrig ist. Läuft t von 0 bis 1, zeichnet dieser Punkt die Kurve.

Bézierkurven in dieser Visualisierung

Eine Bézierkurve vom Grad n wird durch n + 1 Kontrollpunkte P0,…,PnP_0, \dots, P_n bestimmt: Zwei Punkte ergeben eine Strecke, drei eine quadratische Kurve und vier die kubische Kurve aus Zeichenprogrammen. Ihr Punkt B(t)B(t), im Bild rot, entsteht, indem man auf jeder Seite des Kontrollpolygons wiederholt den Anteil t abträgt. Hier kannst du die Punkte verschieben, t von 0 bis 1 durchlaufen lassen und beobachten, wie die Strecken der Konstruktion Fäden hinterlassen, die die Kurve nachzeichnen.

Konstruktion zeigt die Polygone aller Stufen beim aktuellen t, jedes mit einer Seite weniger als das vorherige. Durchlauf lässt t von 0 bis 1 laufen und hinterlässt in gleichen t-Schritten Konstruktionsfäden, deren Farbe von t abhängt. Die Kurve selbst ist die dünne Linie.

Ausgeschrieben ist die Konstruktion eine Leiter gewichteter Mittelwerte, der Algorithmus von de Casteljau:

Pi0=Pi,Pik(t)=(1−t) Pik−1(t)+t Pi+1k−1(t),B(t)=P0n(t).P_i^0 = P_i, \qquad P_i^k(t) = (1 - t)\,P_i^{k-1}(t) + t\,P_{i+1}^{k-1}(t), \qquad B(t) = P_0^n(t) .

Multipliziert man die Stufen aus, erhält jeder Kontrollpunkt eine Summe von Produkten aus n Faktoren, die jeweils 1 − t oder t sind. Für PiP_i enthält jedes Produkt genau i Faktoren t, und es gibt (ni)\binom{n}{i} solche Produkte. Also gilt:

B(t)=∑i=0nbi,n(t) Pi,bi,n(t)=(ni)ti(1−t)n−i.B(t) = \sum_{i=0}^{n} b_{i,n}(t)\, P_i, \qquad b_{i,n}(t) = \binom{n}{i} t^{i} (1 - t)^{n-i} .

Diese Gewichte sind die Bernstein-Polynome; die kleine Grafik zeigt sie. Für 0≤t≤10 \le t \le 1 sind sie nie negativ und ergeben zusammen 1. Daher ist B(t)B(t) ein gewichtetes Mittel der Punkte, und die Kurve verlässt deren konvexe Hülle nie. Verschiebt man einen Punkt PiP_i um einen Vektor Δ, verschiebt sich jeder Kurvenpunkt um bi,n(t) Δb_{i,n}(t)\,\Delta, am stärksten in der Nähe von t=i/nt = i/n. Dieser Kurvenabschnitt liegt nicht immer dem Kontrollpunkt am nächsten.

Bei t = 0 beginnt jede Stufe bei P0P_0, also ist B(0)=P0B(0) = P_0; ebenso gilt B(1)=PnB(1) = P_n. Die Kurve geht durch ihre beiden Endpunkte und normalerweise nicht durch die übrigen Punkte. Die letzte Stufe der Konstruktion ist eine einzelne Strecke. Solange sie nicht zu einem Punkt schrumpft, liegt sie auf der Tangente der Kurve:

B′(t)=n(P1n−1(t)−P0n−1(t)),B′(0)=n (P1−P0),B′(1)=n (Pn−Pn−1).B'(t) = n \bigl(P_1^{n-1}(t) - P_0^{n-1}(t)\bigr), \qquad B'(0) = n\,(P_1 - P_0), \qquad B'(1) = n\,(P_n - P_{n-1}) .

Die Kurve verlässt also P0P_0 in Richtung P1P_1 und erreicht PnP_n aus Richtung Pn−1P_{n-1}, sofern die beiden Punkte am jeweiligen Ende nicht zusammenfallen. Deshalb zeigen Zeichenprogramme die mittleren Punkte einer kubischen Kurve als Griffe, die von den Endpunkten ausgehen.

Jeder Faden der letzten Stufe, der nicht nur ein Punkt ist, berührt die Kurve tangential an dem von ihm getragenen Punkt. Ein Faden eine Stufe darunter berührt ebenso die Kurve aus weniger benachbarten Punkten. So zeichnet jede Fadenschar ihre eigene Kurve nach, und innerhalb des Polygons werden Kurven niedrigeren Grades sichtbar. Nachzeichnen bedeutet nicht, die Kurve von einer Seite einzuhüllen: An einem Wendepunkt kreuzt die Kurve ihre eigene Tangente, und die Fäden liegen auf beiden Seiten. Wenn die drei Kontrollpunkte nicht auf einer Geraden liegen, entsprechen die Fäden einer quadratischen Kurve einem Fadenbild zwischen zwei geraden Nagelreihen. Die von ihnen nachgezeichnete Kurve ist eine Parabel.

Die Konstruktion bei t = s teilt die Kurve auch in zwei Stücke. Die ersten Punkte ihrer Stufen sind die Kontrollpunkte des Stücks von 0 bis s, die letzten die des Stücks von s bis 1. Teilen zeigt diese beiden Gruppen. Halbiert man immer weiter, nähern sich die Kontrollpolygone der Stücke der Kurve an. Grad erhöhen geht den umgekehrten Weg: ein Kontrollpunkt mehr, dieselbe Kurve und ein Polygon, das näher an ihr liegt. Fügt man dagegen durch Drücken auf das Bild einen Punkt hinzu, verändert sich die Kurve.

Paul de Casteljau entwickelte die Konstruktion 1959 bei Citroën. Pierre Bézier gelangte bei Renault unabhängig zu denselben Kurven und veröffentlichte sie in den 1960er-Jahren.

Worauf du achten kannst

  • Gleiche Schritte von t müssen nicht gleichen Weglängen entlang der Kurve entsprechen.
  • Die stärkste Färbung ist nicht die Kurve. Sie entsteht dort, wo sich die meisten Fäden überlagern; das kann etwas neben der Kurve sein.

Verwandtes