Seminar über Numerische Mathematik - Universität Kassel
Seminar über Numerische Mathematik - Universität Kassel
Seminar über Numerische Mathematik - Universität Kassel
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Andreas Meister<br />
<strong>Seminar</strong> <strong>über</strong> <strong>Numerische</strong> <strong>Mathematik</strong><br />
<strong>Seminar</strong> im Wintersemester 2008/2009<br />
<strong>Universität</strong> <strong>Kassel</strong><br />
Fachbereich <strong>Mathematik</strong>
Inhaltsverzeichnis<br />
Bezier-Kurven 1<br />
1 Einleitung 1<br />
2 Der Algorithmus von de-Casteljau 2<br />
2.1 Parabeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />
2.2 Der de-Casteljau-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . 3<br />
3 Die Bernsteinform einer Bezier-Kurve 4<br />
3.1 Bernsteinpolynome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4<br />
3.2 Eigenschaften von Bezier-Kurven . . . . . . . . . . . . . . . . . . . . . 6<br />
4 Ableitungen von Bezier-Kurven 8<br />
4.1 Die Ableitung einer Bezier-Kurve . . . . . . . . . . . . . . . . . . . . . 8<br />
4.2 Ableitungen höherer Ordnung . . . . . . . . . . . . . . . . . . . . . . . 10<br />
4.3 Ableitungen und der de-Casteljau-Algorithmus . . . . . . . . . . . . . . 11
iv<br />
Inhaltsverzeichnis
<strong>Seminar</strong> <strong>über</strong> <strong>Numerische</strong> <strong>Mathematik</strong><br />
Wintersemester 2008/2009, S. 1–13<br />
Bezier-Kurven<br />
Hamid Fetouaki, Emma Skopin<br />
Zusammenfassung: Diese Ausarbeitung beschreibt die Vorgehensweisen zur Bestimmung<br />
von Bezier-Kurven. Diese werden mit dem von de-Casteljau entwickelten Algorithmus und mit<br />
der von Bezier erfundenen Rekursionsformel mittels Bernsteinpolynomen bestimmt. Hinzu<br />
kommen die wichtigen Eigenschaften dieser Kurven. Schließlich führen wir deren Ableitungen<br />
ein.<br />
1 Einleitung<br />
Die geschichtliche Entwicklung der Bezier-Kurven beginnt in den späten 50er Jahren<br />
in der Autoindustrie. Vor der Entwicklung der Bezier-Kurven zeichneten die Designer<br />
Kurven am Papier durch Kurvenlineale. Ausgehend von den Skizzen wurden in zeitaufwendigen<br />
Prozessen maßstäbliche Modelle aus Holz und Ton gefertigt. Ein finales<br />
Master-Modell aus Gips wurde schließlich für die Kopiermaschinen eingesetzt. Seit 1955<br />
wurden die ersten sog. NC(Numerical Control)-Maschinen entwickelt und eingesetzt.<br />
Diese konnten geometrische Daten aus einem Rechner interpretieren und auf Werkzeuge<br />
<strong>über</strong>tragen.<br />
Paul de-Casteljau, der bei Citroën tätig war, entwickelte 1959 ein einfaches und<br />
schnell berechenbares Konstruktionsprinzip für Kurven und gekrümmte Oberflächen.<br />
Parallel entdeckte Pierre Bezier, der für Renault arbeitete, 1962 unabhängig von de-<br />
Casteljau dieselbe Formel. Es folgte ein Rechtsstreit, der durch einen Vergleich beigelegt<br />
wurde: Die allgemeine Formel und damit die Kurven wird folglich nach Pierre Bezier<br />
benannt (Bernstein-Bezier-Polynom, Bezier-Kurve/Fläche) und das zugrunde liegende<br />
Konstruktionsprinzip wird nach de-Casteljau (de-Casteljau-Algorithmus) benannt.<br />
Die Entwicklungen von Bezier und de-Casteljau werden als Grundlage für ein CAD-<br />
Programm benutzt. Bereits wenige Jahre später konnten die Bezier-Kurven unmittelbar<br />
zur Steuerung von NC-Fräsen herangezogen werden.<br />
Die Entwicklung von Bezier und de-Casteljau gaben Anstoß zu parallelen Weiterentwicklungen<br />
in anderen Industriebereichen wie Schiffsbau und Luftfahrt.
2 Hamid Fetouaki, Emma Skopin<br />
2 Der Algorithmus von de-Casteljau<br />
Der de-Casteljau-Algorithmus ist die Grundlage vieler Algorithmen im Gebiet von<br />
Kurven- und Flächendesign. Seine Bedeutung liegt insbesondere im Zusammenspiel<br />
zwischen Geometrie und Algebra.<br />
2.1 Parabeln<br />
Wir beschreiben eine einfache Konstruktion zum Erzeugen einer Parabel, die dann<br />
durch Verallgemeinerung zu den Bezier-Kurven führen wird. Seien nun b 0 , b 1 , b 2 drei<br />
beliebige Punkte im E 3 , und sei t ∈ R. Wir bilden nun:<br />
Durch einsetzen von (1) und (2) in (3) erhalten wir:<br />
b 1 0 (t) = (1 − t) b 0 + tb 1 , (1)<br />
b 1 1 (t) = (1 − t) b 1 + tb 2 , (2)<br />
b 2 0 (t) = (1 − t) b 1 0 (t) + tb 1 1 (t) . (3)<br />
b 2 0 (t) = (1 − t) b 1 0 (t) + tb 1 1 (t)<br />
= (1 − t) [(1 − t) b 0 + tb 1 ] + t[(1 − t) b 1 + tb 2 ]<br />
= (1 − t) 2 b 0 + 2t (1 − t) b 1 + t 2 b 2 .<br />
b 2 0(t) ist ein quadratischer Ausdruck in t (der hochgestellte Index gibt den Grad an),<br />
und für t ∈ (−∞, ∞) erzeugt er somit eine Parabel, die wir mit b 2 bezeichnen. Diese<br />
Konstruktion ist nichts weiter als wiederholte lineare Interpolation. Des weiteren stellen<br />
wir fest, dass Parabeln immer ebene Kurven sind, da b 2 (t) immer eine baryzentrische<br />
Kombination dreier Punkte ist. Diese ist als gewichtete Summe von Punkten definiert,<br />
wobei die Gewichte sich zu Eins aufaddieren müssen.<br />
Abbildung 1: Konstruktion einer Parabel durch wiederholte lineare Interpolation.
2.2 Der de-Casteljau-Algorithmus<br />
Bezier-Kurven 3<br />
Die Verallgemeinerung des oben genannten Verfahrens führt uns auf die Konstruktion<br />
beliebiger polynomialer Kurven mit beliebigem Grad n.<br />
de-Casteljau-Algorithmus:<br />
Gegeben:<br />
Setze:<br />
b 0 , b 1 , b 2 , . . . , b n ∈ E 3 , t ∈ R,<br />
{<br />
b r i (t) = (1 − t) b r−1<br />
i (t) + tb r−1<br />
i+1 (t) für r ∈ {1, . . . , n} und<br />
i ∈ {0, . . . , n − r}<br />
(4)<br />
b 0 i (t) = b i . (5)<br />
Ausgabe:<br />
b n 0(t) ist der Punkt auf der Bezier-Kurve b n , der dem Parameterwert t entspricht.<br />
Das Polygon P , das durch die Punkte b 0 , b 1 , . . . , b n dargestellt wird, wird Bezierpolygon<br />
oder Kontrollpolygon der Kurve b n genannt. Die Polygonecken b i werden Kontrollpunkte<br />
oder Bezierpunkte genannt. Die Zwischenpunkte b r i (t) können wir in<br />
einer Dreiecksform anordnen, dem sogenannten de-Casteljau-Schema. Als Beispiel<br />
betrachten wir den Fall für eine planare kubische Kurve an der Stelle t = 1 2 :<br />
[ 0<br />
b 0 =<br />
0<br />
[ 0<br />
b 1 =<br />
2<br />
[ 8<br />
b 2 =<br />
2<br />
[ 4<br />
b 3 =<br />
0<br />
]<br />
]<br />
]<br />
]<br />
[ 0<br />
b 1 0 =<br />
1<br />
[ 4<br />
b 1 1 =<br />
2<br />
[ 6<br />
b 1 2 =<br />
1<br />
]<br />
]<br />
]<br />
b 2 0 =<br />
b 2 1 =<br />
[ 2<br />
3<br />
2<br />
[ 5<br />
3<br />
2<br />
]<br />
]<br />
b 3 0 =<br />
[ 7<br />
2<br />
3<br />
2<br />
]<br />
Abbildung 2: Das Berechnen eines Punktes auf einer Bezier-Kurve mit dem de-<br />
Casteljau-Algorithmus.
4 Hamid Fetouaki, Emma Skopin<br />
3 Die Bernsteinform einer Bezier-Kurve<br />
3.1 Bernsteinpolynome<br />
Definition 3.1 Das i-te Bernsteinpolynom vom Grad n ist definiert durch:<br />
( ) n<br />
Bi n (t) := t i (1 − t) n−i . (6)<br />
i<br />
Satz 3.2<br />
1. Bernsteinpolynome genügen folgender Rekursionsformel:<br />
mit<br />
B n i (t) = (1 − t)B n−1<br />
i<br />
(t) + tB n−1<br />
i−1 (t) (7)<br />
B 0 0(t) ≡ 1 und (8)<br />
B n j (t) ≡ 0 für j /∈ {0, . . . , n}. (9)<br />
2. Die Bernsteinpolynome bilden eine Teilung der Eins, d.h. es gilt:<br />
Beweis:<br />
n∑<br />
Bj n (t) ≡ 1. (10)<br />
j=0<br />
1. Es gilt: ( ) (<br />
n<br />
i = n−1<br />
) (<br />
i + n−1<br />
( ) n<br />
Bi n (t) = t i (1 − t) n−i<br />
( i ) n − 1<br />
= t i (1 − t) n−i +<br />
( i ) n − 1<br />
= t i (1 − t) n−i−1<br />
i<br />
} {{ }<br />
i−1)<br />
. Für die Bernsteinpolynome gilt somit:<br />
=B n−1<br />
i (t)<br />
= (1 − t)B n−1<br />
i<br />
(t) + tB n−1<br />
i−1 (t).<br />
( ) n − 1<br />
i − 1<br />
t i (1 − t) n−i<br />
( ) n − 1<br />
(1 − t) + t i−1 (1 − t) n−i t<br />
i − 1<br />
} {{ }<br />
=B n−1<br />
i−1 (t)<br />
• B 0 0(t) = ( 0<br />
0)<br />
t 0 (1 − t) 0 = 1<br />
• B n j (t) = 0 für j /∈ {0, . . . , n} nach Definition der Binomialkoeffizienten.<br />
2. Mit Hilfe des binomischen Lehrsatzes folgt:<br />
n∑<br />
Bj n (t) =<br />
j=0<br />
n∑<br />
j=0<br />
( n<br />
j)<br />
t j (1 − t) n−j = (t + 1 − t) n = 1.
Bezier-Kurven 5<br />
Abbildung 3: Die quartischen Bernsteinpolynome.<br />
Beispiel: Die Bernsteinpolynome vom Grad 4<br />
□<br />
Satz 3.3 Für die Zwischenpunkte b r i , die beim de-Casteljau-Algorithmus auftreten, gilt:<br />
{<br />
r∑<br />
b r i (t) = b i+j Bj r r ∈ {0, . . . , n} und<br />
(t), für<br />
(11)<br />
i ∈ {0, . . . , n − r}.<br />
j=0<br />
Für r = n, ist der de-Casteljau-Punkt gerade der Punkt auf der Kurve, und ist gegeben<br />
durch:<br />
n∑<br />
b n (t) = b n 0 (t) = b j Bj n (t). (12)<br />
Beweis: Induktion <strong>über</strong> r<br />
IA: r = 0<br />
j=0<br />
b 0 i (t) (5)<br />
= b i<br />
(8)<br />
= b i B 0 0(t) =<br />
IV: Die Behauptung gelte für r − 1<br />
IS: r − 1 → r<br />
Für r = 1, . . . , n und i = 0, . . . , n − r gilt:<br />
0∑<br />
b i+j Bj 0 (t).<br />
j=0<br />
b r i (t)<br />
(4)<br />
= (1 − t) b r−1<br />
i<br />
(IV )<br />
= (1 − t) r−1 ∑<br />
j=0<br />
j=i<br />
(t) + tb r−1<br />
i+1 (t)<br />
b i+j B r−1<br />
j<br />
(t) + t r−1 ∑<br />
j=0<br />
= (1 − t) i+r−1 ∑<br />
b j B r−1<br />
i+r ∑<br />
j−i (t) + t<br />
(9)<br />
= (1 − t) i+r−1 ∑<br />
j=i<br />
= (1 − t) i+r ∑<br />
j=i<br />
b j B r−1<br />
j−i<br />
b j B r−1<br />
j−i<br />
j=i+1<br />
(t) + (1 − t)Br−1 r<br />
i+r ∑<br />
(t) + t<br />
j=i<br />
b i+1+j B r−1<br />
j (t)<br />
b j B r−1<br />
j−i−1 (t)<br />
b j B r−1<br />
j−i−1 (t)<br />
= i+r ∑ [<br />
]<br />
b j (1 − t)B r−1<br />
j−i (t) + tBr−1 j−i−1 (t)<br />
j=i<br />
∑<br />
= r [<br />
]<br />
b j+i (1 − t)B r−1<br />
j (t) + tB r−1<br />
j−1 (t)<br />
j=0<br />
(7) ∑<br />
= r<br />
j=0<br />
b j+i B r j (t).<br />
(t) + t i+r ∑<br />
j=i+1<br />
b j B r−1<br />
j−i−1 (t) + tBr−1<br />
(t)<br />
Die Formel (12) ergibt sich durch direktes Einsetzen von r = n in (11).<br />
□<br />
Bemerkung 3.4 Bezier-Kurven sind baryzentrische Kombinationen der Kontrollpunkte.
6 Hamid Fetouaki, Emma Skopin<br />
Beweis:<br />
Folgt aus Satz 3.3, Definition von baryzentrischen Kombinationen und (10).<br />
□<br />
Satz 3.5 Bezier-Kurven lassen sich mittels der Zwischenpunkte b r i wie folgt darstellen:<br />
r∑<br />
b n (t) = b n−r<br />
i (t)Bi r (t), wobei r ∈ {0, . . . , n}. (13)<br />
i=0<br />
D.h. berechne zuerst n − r Stufen des de-Casteljau-Algorithmus in Abhängigkeit von t,<br />
betrachte die resultierenden Punkte b n−r<br />
i (t) als Kontrollpunkte einer Bezier-Kurve vom<br />
Grad r, und werte diese an der Stelle t aus.<br />
Beweis: Induktion <strong>über</strong> r<br />
IA: r = 0<br />
b n (t) = b n 0(t) (8)<br />
= b n 0(t)B 0 0 (t) =<br />
0∑<br />
i=0<br />
b n−0<br />
i (t)Bi 0 (t).<br />
IV: Die Behauptung gelte für ein beliebiges aber festes r ∈ {0, . . . , n − 2}, sonst ist (4)<br />
nicht anwendbar.<br />
IS: r → r + 1<br />
Somit:<br />
∑<br />
b n (t) = r (t)Bi r (t)<br />
∑<br />
= r [<br />
i=0<br />
(4)<br />
i=0<br />
b n−r<br />
i<br />
= (1 − t) r ∑<br />
(1 − t)b n−r−1<br />
i<br />
i=0<br />
(9)<br />
= (1 − t) r+1 ∑<br />
= r+1 ∑<br />
i=0<br />
= r+1 ∑<br />
]<br />
(t) + tb n−r−1<br />
i+1 (t) Bi r (t)<br />
∑<br />
b n−r−1<br />
i (t)Bi r (t) + t r<br />
b n−r−1<br />
i=0<br />
b n−(r+1)<br />
i (t)<br />
b n−(r+1)<br />
i (t)B r+1<br />
i<br />
i=0<br />
i=0<br />
b n−r−1<br />
i+1 (t)B r i (t)<br />
i (t)Bi r (t) + t r+1 ∑<br />
b n−r−1<br />
i (t)Bi−1(t)<br />
r<br />
i=0<br />
[<br />
]<br />
(1 − t)Bi r (t) + tBi−1(t)<br />
r<br />
} {{ }<br />
(t).<br />
=B r+1<br />
i (t)<br />
Somit ist die Behauptung für r ∈ {0, . . . , n−1} gezeigt. Für r = n folgt die Behauptung<br />
direkt aus (12) unter Anwendung von (5).<br />
□<br />
3.2 Eigenschaften von Bezier-Kurven<br />
Affine Invarianz:<br />
Definition 3.6 Eine Abbildung Φ : E 3 → E 3 heißt affine Abbildung, wenn sie baryzentrische<br />
Kombinationen invariant lässt. Sei also x = ∑ α j a j ; x, a j ∈ E 3 eine baryzentrische<br />
Kombination und Φ eine affine Abbildung, dann ist Φ(x) = ∑ α j Φ(a j ), Φ(x),<br />
Φ(a j ) ∈ E 3 .
Bezier-Kurven 7<br />
Die affine Invarianz folgt daraus, dass die Bezier-Kurven baryzentrische Kombinationen<br />
der Kontrollpunkte sind. Das heißt, dass die beiden folgenden Vorgehensweisen dasselbe<br />
Resultat liefern: (1) Berechne erst den Punkt b n (t) und wende anschließend eine affine<br />
Abbildung darauf an; (2) Wende zuerst die affine Abbildung auf das Kontrollpolygon<br />
an und werte das transformierte Kontrollpolygon am Parameterwert t aus.<br />
Invarianz unter affinen Parametertransformationen:<br />
Es ist bequemer ein Parameter t aus dem Intervall [0, 1] zu nehmen. Aber natürlich kann<br />
man auch ein Parameter u ∈ [a, b] nehmen und lokale Koordinaten t = u−a einführen<br />
b−a<br />
und darauf den Algorithmus anwenden.<br />
b n (t) =<br />
n∑<br />
b i Bi n (t) =<br />
i=0<br />
n∑<br />
b i Bi<br />
n<br />
i=0<br />
( u − a<br />
)<br />
.<br />
b − a<br />
Der Übergang vom Intervall [a, b] zum Intervall [0, 1] stellt eine affine Abbildung dar.<br />
Wir können deshalb sagen, dass Bezier-Kurven invariant unter affinen Parametertransformationen<br />
sind.<br />
Konvexe-Hüllen-Eigenschaft:<br />
Diese folgt aus der Tatsache, dass die Bernsteinpolynome für t ∈ [0, 1] nicht-negativ<br />
sind und sich zu Eins aufsummieren.<br />
Endpunkte-Interpolation:<br />
Die Bezier-Kurve verläuft durch die Punkte b 0 und b n . Dies sieht man, indem man t = 0<br />
und t = 1 in (4) oder in (12) einsetzt.<br />
Symmetrie:<br />
Es spielt keine Rolle, ob wir die Bezier-Punkte mit b 0 , b 1 , . . . , b n oder b n , . . . , b 1 , b 0 bezeichnen.<br />
Die entsprechenden Kurven stimmen <strong>über</strong>ein, sie unterscheiden sich nur in<br />
der Richtung, in der sie durchlaufen werden. D.h.<br />
n∑<br />
b j Bj n (t) =<br />
j=0<br />
n∑<br />
b n−j Bj n (1 − t).<br />
j=0<br />
Dies folgt aus der Identität B n j (t) = B n n−j(1 − t). Wir nennen deshalb Bernsteinpolynome<br />
symmetrisch in bezug auf t und 1 − t.<br />
Invarianz unter baryzentrischen Kombinationen:<br />
Gegeben sind zwei Bezier-Kurven b n , c n . Dann gilt für α + β = 1:<br />
n∑<br />
n∑<br />
α b j Bj n (t) + β c j Bj n (t) =<br />
j=0<br />
j=0<br />
n∑<br />
(αb j + βc j )Bj n (t)<br />
j=0<br />
Mit anderen Worten: Wir können das gewichtete Mittel zweier Bezier-Kurven entweder<br />
dadurch berechnen, dass wir das gewichtete Mittel der Kurvenpunkte nehmen, oder
8 Hamid Fetouaki, Emma Skopin<br />
aber indem wir erst das gewichtete Mittel der entsprechenden Kontrollpunkte bilden<br />
und dann die Kurve berechnen.<br />
Lineare Präzision:<br />
Wir nutzen folgende Identität:<br />
n∑<br />
j=0<br />
j<br />
n Bn j (t) = t.<br />
Wir nehmen für die Kontrollpunkte b j gleichmäßig verteilte Punkte auf der Geraden,<br />
welche die Punkte p und q verbindet, d.h.<br />
b j =<br />
(<br />
1 − j )<br />
p + j n n q,<br />
j = 0, . . . , n<br />
Dann gilt:<br />
b n (t)<br />
∑<br />
= n ]<br />
[(1 − j )p + j q B n n n j (t)<br />
= p<br />
j=0<br />
n∑<br />
Bj n (t) −p<br />
j=0<br />
} {{ }<br />
=1<br />
= p + t(q − p)<br />
n∑ j<br />
n Bn j (t) +q<br />
j=0<br />
} {{ }<br />
=t<br />
n∑<br />
j=0<br />
j<br />
n Bn j (t)<br />
} {{ }<br />
=t<br />
In Worten ausgedrückt heißt das: Die Kurve, die durch dieses Polygon erzeugt wird, ist<br />
genau die Gerade zwischen p und q, d.h. die Originalgerade wird reproduziert. Diese<br />
Eigenschaft wird lineare Präzision genannt.<br />
Pseudo-lokale-Kontrolle:<br />
Das Bernsteinpolynom Bi n (t) besitzt nur ein Maximum und nimmt dieses an der Stelle<br />
t = i an. Dies hat Einfluß auf das Design von Kurven: Wenn wir nur eine der<br />
n<br />
Polygonecken b i verändern, dann ist die Änderung der Kurve im Bereich um den Parameterwert<br />
i am stärksten.<br />
n<br />
4 Ableitungen von Bezier-Kurven<br />
4.1 Die Ableitung einer Bezier-Kurve<br />
Satz 4.1 Die Ableitung eines Bernsteinpolynoms B n i (t) ist gegeben durch:<br />
d<br />
dt Bn i (t) = n [ B n−1<br />
i−1 (t) − Bn−1 i (t) ] , wobei i ∈ {0, . . . , n}. (14)
Bezier-Kurven 9<br />
Beweis:<br />
d<br />
dt Bn i (t) =<br />
dt( d ) n<br />
t i (1 − t) n−i<br />
i<br />
( )<br />
( )<br />
n n<br />
= i t i−1 (1 − t) n−i + (−1) t i (n − i)(1 − t) n−i−1<br />
i i<br />
= i · n!<br />
i!(n − i)! ti−1 (1 − t) n−i (n − i)n!<br />
−<br />
i!(n − i)! ti (1 − t) n−i−1<br />
i · n(n − 1)!<br />
=<br />
i(i − 1)!(n − i)! ti−1 (1 − t) n−i (n − i)n(n − 1)!<br />
−<br />
i!(n − i)(n − i − 1)! ti (1 − t) n−i−1<br />
[ ( )<br />
(<br />
n − 1<br />
n − 1<br />
]<br />
= n t i−1 (1 − t) n−i −<br />
)t i (1 − t) n−i−1<br />
i − 1<br />
i<br />
= n [ B n−1<br />
i−1 (t) − Bn−1 i (t) ] .<br />
Satz 4.2 Für eine Bezier-Kurve b n (t) gilt folgendes:<br />
d ∑n−1<br />
dt bn (t) = n [b j+1 − b j ]B n−1<br />
j (t). (15)<br />
j=0<br />
□<br />
Beweis:<br />
d<br />
dt bn (t)<br />
n∑<br />
(12)<br />
= d b j Bj n (t)<br />
dt j=0<br />
∑<br />
= n d<br />
b j<br />
dt Bn j (t)<br />
j=0<br />
(14)<br />
= n ∑<br />
j=0<br />
= n n ∑<br />
j=0<br />
(9) ∑<br />
= n n<br />
= n n−1 ∑<br />
b j<br />
(<br />
n[B n−1<br />
j−1<br />
B n−1<br />
j−1 (t)b j − n n ∑<br />
B n−1<br />
j=1<br />
j=0<br />
j=0<br />
)<br />
(t) − Bn−1 j (t)]<br />
j=0<br />
j−1 (t)b j − n n−1 ∑<br />
B n−1<br />
j<br />
j=0<br />
(t)b j+1 − n n−1 ∑<br />
B n−1<br />
j (t)b j<br />
B n−1<br />
j (t)b j<br />
j=0<br />
= n n−1 ∑ [ ]<br />
bj+1 − b j B<br />
n−1<br />
j (t).<br />
B n−1<br />
j (t)b j<br />
□<br />
Definition 4.3 Der Vorwärtsdifferenzenoperator △ r ist definiert durch:<br />
{<br />
△ r △ r−1 b j+1 − △ r−1 b j , für r ∈ N<br />
b j :=<br />
b j , für r = 0.<br />
(16)
10 Hamid Fetouaki, Emma Skopin<br />
Mit der obigen Definition erhalten wir für die Ableitung einer Bezier-Kurve:<br />
d ∑n−1<br />
dt bn (t) = n △ 1 b j B n−1<br />
j (t); △ 1 b j ∈ R 3 . (17)<br />
j=0<br />
Die Ableitung einer Bezier-Kurve ist somit selbst wieder eine Bezier-Kurve, deren Bezierpolygon<br />
(Kontrolpolygon) durch Differenzieren des ursprünglichen Polygons gegeben<br />
ist. Man beachte jedoch, dass die Ableitungs-Bezier-Kurve nicht mehr in E 3 lebt!<br />
Denn Ihre Koeffizienten sind Differenzen von Punkten, also Vektoren. Diese sind Elemente<br />
des R 3 . Um die Ableitungskurve mit ihrem Polygon in E 3 darzustellen, konstruieren<br />
wir ein Polygon in E 3 , welches aus den Punkten a + △b 0 , . . . , a + △b n besteht,<br />
wobei a ∈ E 3 beliebig. Eine mögliche Wahl wäre a = 0, für dieses a wird manchmal die<br />
Bezier-Kurve Hodograph genannt.<br />
Abbildung 4: Eine Bezier-Kurve und ihre erste Ableitung als Kurve (verkleinert um<br />
Faktor drei).<br />
4.2 Ableitungen höherer Ordnung<br />
Beispiel: Berechnung der ersten Vorwärtsdifferenzen:<br />
△ 0 b i<br />
△ 1 b i<br />
△ 2 b i<br />
△ 3 b i<br />
= b i<br />
= b i+1 − b i<br />
= △ 1 b i+1 − △ 1 b i = b i+2 − 2b i+1 + b i<br />
= △ 2 b i+1 − △ 2 b i = b i+3 − 3b i+2 + 3b i+1 − b i<br />
Satz 4.4 Die Vorwärtsdifferenzen lassen sich berechnen durch:<br />
△ r b i =<br />
r∑<br />
j=0<br />
( r<br />
j)<br />
(−1) r−j b i+j . (18)<br />
Beweis: Induktion <strong>über</strong> r<br />
IA: r = 0<br />
△ 0 b i = b i =<br />
( 0<br />
0)<br />
(−1) 0 b i =<br />
0∑<br />
j=0<br />
( 0<br />
j)<br />
(−1) 0−j b i+j .
IV: Die Behauptung gelte für ein beliebiges aber festes r<br />
IS: r → r + 1<br />
Bezier-Kurven 11<br />
△ r+1 (16)<br />
b i = △ r b<br />
( i+1 )<br />
− △ r b i<br />
( )<br />
(IV ) ∑<br />
= r r ∑<br />
(−1) r−j b i+1+j − r r<br />
(−1) r−j b i+j<br />
j=0<br />
(<br />
j<br />
)<br />
j=0 j<br />
( )<br />
= r+1 ∑ r<br />
∑<br />
(−1) r−(j−1) b i+j + r r<br />
(−1) r−j+1 b i+j<br />
j=1<br />
(<br />
j − 1<br />
)<br />
(<br />
j=0 j<br />
)<br />
∑<br />
= r r<br />
(−1) r−j+1 r<br />
b i+j +<br />
(−1) r−(r+1−1) b i+r+1<br />
j=1 j − 1<br />
r + 1 − 1<br />
} {{ }<br />
= b i+r+1<br />
( ( )<br />
r ∑<br />
+ (−1)<br />
0)<br />
r+1−0 b i + r r<br />
(−1) r−j+1 b i+j<br />
j=1 j<br />
} {{ }<br />
= (−1) r+1 b i<br />
(<br />
∑<br />
= (−1) r+1 b i + (−1) (r+1)−(r+1) b i+r+1 + r r + 1<br />
( )<br />
j=1 j<br />
= r+1 ∑ r + 1<br />
(−1) r+1−j b i+j .<br />
j=0<br />
j<br />
Satz 4.5 Für die r − te Ableitung einer Bezier-Kurve gilt:<br />
d r<br />
dt r bn (t) =<br />
n! ∑n−r<br />
(n − r)!<br />
j=0<br />
)<br />
(−1) r+1−j b i+j<br />
△ r b j B n−r<br />
j (t). (19)<br />
□<br />
Beweis: Durch wiederholte Anwendung von (17).<br />
□<br />
4.3 Ableitungen und der de-Casteljau-Algorithmus<br />
Satz 4.6 Die Ableitungen einer Bezier-Kurve können durch die Zwischenpunkte, die<br />
beim de-Casteljau-Algorithmus auftreten, folgendermaßen ausgedrückt werden:<br />
Beweis:<br />
d r<br />
dt r b n(t) =<br />
n!<br />
(n − r)! △r b n−r<br />
0 (t). (20)<br />
Zuerst zeigen wir, dass Summation und Differenzenbildung kommutieren:<br />
∑n−1<br />
∑n−1<br />
△b j = [b j+1 − b j ] =<br />
j=0<br />
j=0<br />
n∑ ∑n−1<br />
∑n−1<br />
b j − b j = △ b j .<br />
j=1 j=0<br />
j=0
12 Hamid Fetouaki, Emma Skopin<br />
Somit erhalten wir:<br />
d r<br />
dt r bn (t) =<br />
=<br />
=<br />
n! ∑n−r<br />
(n − r)!<br />
j=0<br />
△ r b j B n−r<br />
j (t)<br />
n! ∑n−r<br />
(n − r)! △r b j B n−r<br />
j (t)<br />
j=0<br />
n!<br />
(n − r)! △r b n−r<br />
0 (t).<br />
(19) und (20) liefern uns zwei verschiedene Methoden, die r-te Ableitung einer Bezier-<br />
Kurve zu berechnen. Die Methode (19) besteht darin, alle r-ten Vorwärtsdifferenzen<br />
der Kontrollpunkte zu bilden, diese als ein neues Bezierpolygon vom Grad n − r zu<br />
interpretieren und dies an der Stelle t auszuwerten. Die Methode (20) besteht aus der<br />
Berechnung der r-ten Ableitung als ein Nebenprodukt des de-Casteljau-Algorithmus.<br />
Beispiel: Zwei Methoden, Ableitungen zu berechnen:<br />
Um die Ableitung der Bezier-Kurve aus dem ersten Beispiel zu berechnen, bilden wir<br />
zuerst die ersten Differenzen der Kontrollpunkte:<br />
□<br />
[ 0<br />
△b 0 = b 1 − b 0 =<br />
2<br />
[ 8<br />
△b 1 = b 2 − b 1 =<br />
2<br />
[ 4<br />
△b 2 = b 3 − b 2 =<br />
0<br />
] [ 0<br />
−<br />
0<br />
] [ 0<br />
−<br />
2<br />
] [ 8<br />
−<br />
2<br />
] [ 0<br />
=<br />
2<br />
] [ 8<br />
=<br />
0<br />
]<br />
=<br />
]<br />
,<br />
]<br />
,<br />
[ −4<br />
−2<br />
]<br />
.<br />
Dann werten wir die entstehende quadratische Kurve an der Stelle t = 1 2 aus:<br />
B 2 0<br />
( 1<br />
=<br />
2)<br />
1 ( 1<br />
4 , B2 1 =<br />
2)<br />
1 ( 1<br />
2 , B2 2 =<br />
2)<br />
1 4 .<br />
Somit erhalten wir:<br />
d<br />
( 1<br />
)<br />
dt b3 = 3! 1 0<br />
]<br />
+<br />
2 2!(<br />
4[ 1 [ 8<br />
2 2 2<br />
]<br />
+ 1 4<br />
[ −4<br />
−2<br />
]) [ 9<br />
=<br />
0<br />
]<br />
.<br />
Als Alternative berechnen wir △b 2 0( 1 2 ):<br />
△b 2 0<br />
( 1<br />
( 1<br />
( 1<br />
= b<br />
2)<br />
2 1 − b<br />
2)<br />
2 0 =<br />
2)<br />
[ 5<br />
3<br />
2<br />
]<br />
−<br />
[ 2<br />
3<br />
2<br />
] [ 3<br />
=<br />
0<br />
]<br />
.<br />
Multiplikation mit 3 liefert das Ergebnis.
Bezier-Kurven 13<br />
Literatur<br />
[1] G. Farin. Curves and surfaces for computer aided geometric design. Academ.<br />
Press, Boston, 1988.<br />
[2] G. Farin. Kurven und Flächen im Computer Aided Geometric Design. Vieweg.,<br />
Braunschweig/Wiesbaden, 1994.