Polynome im Einsatz: Bézier-Kurven im CAD Dipl.-Inform. Wolfgang Globke Institut für Algebra und Geometrie Arbeitsgruppe Differentialgeometrie Universität Karlsruhe 1 / 25
Kurven im Raum Eine Kurve im R 3 ist durch eine Abbildung x(t) c : [a, b] R 3, t y(t) z(t) gegeben. Dabei kann man sich t als Zeitparameter vorstellen, so dass die Kurve c im Zeitraum von t = a bis t = b abgelaufen wird. 2 / 25
Kurven im Raum c(b) z x c(t) y c(a) 3 / 25
Tangenten Die Tangente einer Raumkurve c im Punkt c(t 0 ) ist die Gerade, die durch den Punkt c(t 0 ) in Richtung der Ableitung c nach dem Zeitparameter t zum Zeitpunkt t 0 verläuft: x (t 0 ) c (t 0 ) = y (t 0 ) z (t 0 ) Die Ableitung c (t 0 ) selbst ist ein Richtungsvektor, den man sich am Punkt c(t 0 ) befestigt vorstellen kann, und die Kurve entlanggleitet, wenn t 0 variiert. Die Länge c (t 0 ) der Ableitung kann als Geschwindigkeit aufgefasst werden. 4 / 25
Tangenten c (t 0 ) c(t 0 ) 5 / 25
Kurven im CAD Gewünscht: Eine glatte Kurve b(t), deren Verlauf durch Angabe von Kontrollpunkten vorgegeben wird. b 1 b 3 b 0 b 2 6 / 25
Kurven im CAD Forderungen: 1 Zum Zeitpunkt t = a soll die Kurve im Startpunkt liegen: b(a) = b 0. 2 Zum Zeitpunkt t = b soll die Kurve im Endpunkt liegen: b(b) = b 3. 3 In der ersten Hälfte des Kurvenverlaufs soll die Kurve stark zu b 1 hingezogen werden. 4 In der zweiten Hälfte des Kurvenverlaufs soll die Kurve stark zu b 2 hingezogen werden. 7 / 25
Kurven im CAD Ansatz: Zu jedem Zeitpunkt t [a, b] soll b(t) eine gewichtete Summe der Kontrollpunkte sein: b(t) = B 0 (t)b 0 + B 1 (t)b 1 + B 2 (t)b 2 + B 3 (t)b 3 mit B 0 (t) + B 1 (t) + B 2 (t) + B 3 (t) = 1 für alle t [a, b], B i (t) 0 für t [a, b], i = 0, 1, 2, 3. 8 / 25
Bernstein-Polynome Als Gewichtsfunktionen bieten sich die kubischen Bernstein-Polynome B0 3, B3 1, B3 2, B3 4 an: ( ) 3 Bk 3 = X k (1 X ) 3 k k 1 B 3 0 B 3 3 B 3 1 B 3 2 0=a 1=b 9 / 25
Bernstein-Polynome Die Bernstein-Polynome sind geeignete Gewichtsfunktionen: Sie sind eine Partition der 1, d.h. 1 = (X + (1 X )) 3 = 3 k=0 Auf dem Intervall [0, 1] gilt stets ( ) 3 X k (1 X ) 3 k = k Bk 3 (t) 0. (Für beliebige Intervalle [a, b]: Umparametrisieren.) 3 Bk 3. k=0 10 / 25
Bézier-Kurven Eine kubische Bézier-Kurve b(t) hat die Bernstein-Polynome als Gewichtsfunktionen: b(t) = B 3 0 (t)b 0 + B 3 1 (t)b 1 + B 3 2 (t)b 2 + B 3 3 (t)b 3 Somit hat die Kurve die gewünschten Eigenschaften: 1 Bei t = 0 ist B0 3(0) = 1 und B3 1 (0) = B3 2 (0) = B3 3 (0) = 0, also b(0) = b 0. 2 Bei t = 1 ist B3 3(0) = 1 und B3 0 (0) = B3 1 (0) = B3 2 (0) = 0, also b(1) = b 3. 3 In der ersten Hälfte des Kurvenverlaufs ist der Wert von B 3 1 (t) am größten, die Kurve wird also zu b 1 hingezogen. 4 In der zweiten Hälfte des Kurvenverlaufs ist der Wert von B 3 2 (t) am größten, die Kurve wird also zu b 2 hingezogen. 11 / 25
Bézier-Kurven Die beiden französischen Ingenieure Pierre Bézier (1910-1999) und Paul Faget de Casteljau (1930- ) entwickelten in den 1960er Jahren unabhängig voneinander die Bézier-Kurven in der Automobilindustrie (der eine für Renault, der andere für Citroën). 12 / 25
Bézier-Kurven Die kubischen Bernstein-Polynome bilden eine Basis des Raums der Polynome vom Grad 3. Somit können alle Kurven, die auf einem Segment mit einer polynomialen kubischen Kurve übereinstimmen, als Bézier-Kurven dargestellt werden. Für polynomiale Kurvensegmente von beliebigem Grad n kann man die Bernstein-Polynome vom Grad n verwenden: ( ) n Bk n = X k (1 X ) n k. k 13 / 25
de Casteljau-Algorithmus Bernstein-Polynome haben einige verblüffende algebraische Eigenschaften. Daraus lässt sich der de Casteljau-Algorithmus ableiten, mit dem eine Bézier-Kurve an der Stelle t sehr effizient ausgewertet werden kann: b 0 t b 1 t 1 b 1 0 t t b 1 t 2 b 1 1 t 1 b 2 0 t t t b 3 1 t b 1 2 t b 2 1 1 t b(t) 14 / 25
de Casteljau-Algorithmus Mit dem de Casteljau-Algorithmus kann man auch Ableitungen der Kurve berechnen. Unterteilung des Kontrollpolygons zur Approximation der Kurve berechnen: b 1 b 3 b 0 b 2 15 / 25
Splines Eine Spline-Kurve ist eine Kurve s, die sich stückweise aus polynomialen Kurvensegmenten zusammensetzt, aber nicht global eine polynomiale Kurve sein muss. 16 / 25
Splines Statt stückweise durch Bézier-Kurven, kann man Splines auch als Linearkombination von B-Splines ( B für Basis) darstellen. B-Splines sind keine Polynome, aber stimmen über gewissen Intervallen mit Polynomen überein. Vorteil: Kontrollpunkte beeinflussen den Kurvenverlauf nur lokal. In der Industrie bekannt als Non-Uniform Rational B-Splines (NURBS). 17 / 25
Klassisches Problem: Interpolation Bei einem Interpolationsproblem werden Punkte p 1,..., p k R n vorgegeben, durch die eine Kurve gelegt werden soll. 3 2 1 5-2,5 0 2,5 5-1 -2-3 In der Regel sind noch Nebenbedingungen an die Kurve gegeben. 18 / 25
Klassisches Problem: Interpolation Interpolation leicht durch Polynome zu lösen (es ist nur ein LGS zu lösen). Aber: Für k Punkte Polynom vom Grad k notwendig - dies kann zu schlechten Lösungen führen: 3 2 1 5-2,5 0 2,5 5-1 -2-3 Besser: Kurve stückweise aus Polynomen zusammensetzen. 19 / 25
Klassisches Problem: Interpolation Hermite-Interpolation: Ableitungen der Kurve in den Interpolationspunkten werden zusätzlich vorgegeben. Durch Bézier-Kurven ohne Aufwand lösbar. Ableitungen der Bézier-Kurve sind durch das Kontrollpolygon vorzugeben. 20 / 25
Klassisches Problem: Interpolation Spline-Interpolation: Beliebig viele Interpolationspunkte, aber Kurve nur stückweise polynomial vom Grad 3. Kurve ist Linearkombination von B-Splines. Linearkombination wird durch Lösen eines LGS bestimmt: 4 1 c 0 p 1 4 1 c 0 p... 1. = 1. 1 4 1 c k 1 p 1 4 c k 1 k p k 21 / 25
Anwendungen Freiformkurven (und -flächen) in der Computergraphik. Laufwege für Roboter und Maschinen. Schriftsätze als Vektorgraphiken. Modellierung von 3D-Daten. Numerische Simulation physikalischer Prozesse. 22 / 25
Weitere Grundlagen Die Theorie der Bézier- und Spline-Kurven berührt auch folgende Bereiche der Mathematik: Differentialgeometrie. Numerische Mathematik. Projektive Geometrie. 23 / 25
CAD in Karlsruhe IBDS Prautzsch Institut für angewandte Geometrie und Computergraphik Vorlesung: Kurven und Flächen im CAD Vorlesung: Unterteilungsalgorithmen Vorlesung: Rationale Splines Vorlesung: Netze und Punktwolken Praktikum: Geometrisches Modellieren 24 / 25
G. Farin: Curves and Surfaces for CAGD (Morgan Kaufmann) H. Prautzsch, W. Boehm, M. Paluszny: Bézier and B-Spline Techniques (Springer) 25 / 25