Kurven und Flächen Interaktive Kontrolle und Präsentation komplexer Kurven und Flächen (=Modellierung) 154
Modellieren mit Freiformkurven und -flächen Modellierungsprozesse (Taping) in der Automobilindustrie Die Bilder stammen aus Projektarbeiten des Fraunhofer Institutes für Grafische Datenverarbeitung 155
Freiformkurven und -flächen Eigenschaften Mehrdeutigkeit möglich, abgeschlossen bzgl. Transformationen, reichhaltig erweiterbar auf Flächen: S(u, v) = ( x(u, v), y(u, v), z(u, v) ) Interpolation zwischen Stützpunkten (z.b. graphische Darstellung von Meßergebnissen) Approximation von Polygonnetzen (z.b. CAD in der Karosseriekonstruktion, Produktmodellierung und in geographischen Informationssystemen interaktive Geländemodellierung) Die letztgenannten Punkte stellen Freiformkurven und -flächen dar. 156
Mathematische Modelle analytisch gegebene Kurven und Flächen (z.b. Kugeln, Paraboloide): x 2 + y 2 + z 2 = r 2 implizit: f(x, y, z) = 0 explizit: y = f( x, z ) Mehrdeutigkeit möglich Bemerkung: z.b. Kugel nicht abgeschlossen gegenüber Transformationen : (x, y, z) - (m x, m y,m z ) <= r Parameterdarstellung: P(t) = (x(t), y(t), z(t)) P(u,v) = ( x(u,v), y(u,v), z(u,v) ) 157
Anforderungen (I) gegeben Kontrollpunkte/Stützstellen (mit dem Ziel: zu interagieren, modellieren, verändern, beherrschen...) Mehrwertige Kurven müssen möglich sein (z.b. Spiralen) zu einem x-wert kann es mehr als einen y-wert geben lokale vs. globale Kontrolle: Lokale Kontrolle: Änderung (Verschieben eines Kontrollpunktes) hat nur lokale Auswirkung (Kurvenverlauf ändert sich nur in dessen Umgebung) Globale Kontrolle: Wenn 1 Stützpunkt geändert wird, dann ändert sich der gesamte Kurvenverlauf 158
Skizze/Begriffe (sechs) Kontrollpunkte/Stützstellen Anfangs-/Endpunkt 159
Anforderungen (II) Achsenunabhängigkeit (Transformationen müssen möglich sein) Glatte Kurven (Keine Oszillierung): Für bel. Gerade darf die Anzahl der Schnittpunkte mit der Kurve nicht größer sein als die Anzahl der Schnittpunkte mit dem Kontrollpolygon Reichhaltigkeit Gerade und Ebene zu wenig Kontrolle am Rand/Endpunkte ( Zusammensetzung von Segmenten/Teilstücken) 160
Anforderungen (III) Mathematische Repräsentation präzise, Tangenten, Krümmung herleitbar komplette generative, herleitbare Beschreibung interaktives Modellieren muss möglich sein (kurz Antwortzeiten einfache Berechnungsvorschrift) Man kann sich vorstellen, dass die Punkte bei der Interpolation und Approximation zeitlich hintereinander erzeugt werden (P(t)). 161
Interpolation Gegeben sind n+1 disjunkte (=verschiedene) Stützstellen (P 0.. P n ). Das Ziel ist nun, mit einem algebraischen Polynom mit möglichst niedrigem Grad, das an den Stützstellen die zugehörigen x- und y- Werte annimmt, alle Wertepaare zu beschreiben Interpolationsfunktion: n Polynom(t) = P i * g(t) i= 0 n+1 Stützstellen, g(t) (Ge-)Wichtungsfunktion g(t) besagt, wie die einzelnen Kontrollpunkte in die jeweilige Berechnung des Punktes eingehen. Dabei durchläuft t das Intervall [0, 1]. Man kann sich das so vorstellen, dass die Variable t in einem Zeitintervall auf der so definierten Kurve entlang wandert. 162
Lagrange sche Interpolationsfunktion Für die Interpolation von Kontrollpunkten bietet sich die Lagrange sche Interpolationsfunktion an: n n P(t) = Pi * (t - j/n) / (i/n - j/n) mit t = 0.. 1 i= 0 j = 0 j i für Lagrange gilt: nur globale Kontrolle Lagrange neigt zur Oszillation bei vielen Kontrollpunkten, d.h. es wird keine glatte Kurve erzeugt (Wellen können entstehen) in den Endpunkten nur Kontrolle über die Koordinaten, nicht über die Tangente und Krümmung Kurvenverlauf ist schwer zu prognostizieren 163
Lagrange sche Interpolationsfunktion Für n = 3 ergibt sich die folgende Lagrange sche Interpolationsfunktion: ( t - 1/3) * (t - 2/3) *( t - 3/3) P(t) = P0 * + (0/3-1/3) * (0/3-2/3) *(0/3-3/3) ( t - 0/3) * (t - 2/3) *( t - 3/3) P1 * + (1/3-0/3) * (1/3-2/3) *(1/3-3/3) ( t - 0/3) * (t - 1/3) *( t - 3/3) P2 * + (2/3-0/3) * (2/3-1/3) *(2/3-3/3) ( t - 0/3) * (t - 1/3) *( t - 2/3) P3 * (3/3-0/3) * (3/3-1/3) *(3/3-2/3) insbesondere gilt: P(t = i/n) = Pi 164
Lagrange-Polynome vom Grad 2 Mit 3 Stützstellen 165
Lagrange-Polynome vom Grad 4 Interpolation mit 5 Stützstellen 166
Approximation Gegebene Funktion wird durch approximierende Funktion ersetzt Die Funktion ist in aller Regel durch eine endliche Anzahl von Wertepaaren gegeben (x i,f(x i )), wobei die Wertepaare nicht notwendigerweise auf der Approximationsfunktion liegen. Dies entspricht einer Verringerung der Anforderung gegenüber der Interpolation. Bézier-Kurven Als Wichtungsfunktion verwendet man bei den Bézier-Kurven die Bernstein-Polynome. 167
Bézier-Kurven Eigenschaften: 1. Endpunkte werden interpoliert: Stützstelle für t = 0 und t = 1 liegen auf der Kurve. 2. Die Steigung P in den Endpunkten ist die Kante des Stützpolygons: P (t=0) = 3 * ( P 1 -P 0 ) P (t=1) = 3 * ( P n -P n-1 ) (Bem.: Kontrollieren Sie durch eigenes Ableiten) 3. Die Richtung ist P 1 -P 0 und P n -P n-1 4. Für 0 t 1 ist 0 B i,n ( t ) 1 5. Für bel. 0 t 1 ist P(t) = B i, n (t) = 1 mit i = 0.. n 6. Kurve liegt immer in der konvexen Hülle des Kontrollpolygons (wg. 3. und. 4.) In der Regel arbeitet man mit n = 3 (d.h. 4 Kontrollpunkten). 168
Bernstein Polynome Wichtungsfunktion = Bernstein Polynome (n+1) Stützstellen: P 0.. P n n P(t) = P i * B i, n (t) mit i = 0.. n und n = 3 i = 0 n B i,n (t) = * t i * (1-t) n-i 0 t 1 und mit i n n! = i i! * (n-i)! 169
Basisfunktion 170
Aufgabe Gegeben sind die Stützpunkte P0 = (0, 2, 3), P1 = (6, 5, 2), P2 = (8, 1, 4), P3 = (4,-2, 1) a) Bestimmen Sie die Bézier-Approximation für t = 0, 1/3, 2/3 und 1 b) Schreiben Sie die Koeffizienten Bi, n als Funktion von t für i = 0.. 3 c) Stellen Sie das Ergebnis graphisch dar d) Was bewirkt die Änderung der Stützstelle von P3 (4, -2) nach P3 (9, 1)? (Erklären, nicht rechnen) e) Wie erreicht man, dass zwei Kurvensegmente beim Aneinanderfügen keine Knickstellen haben? f) Stellen Sie die Bézierkurve in Matrixschreibweise dar 171
Berechnungsverfahren nach de Casteljau und Fehlerbetrachtungen Der de Casteljau Algorithmus reduziert die Berechnung von Bézier auf einfache Multiplikationen: Die Stützstellen werden für den Fall t = tx (0 < tx 1) im Verhältnis (1 - tx) / tx geteilt und solange wiederholt angewendet, bis Stützstellen einen Punkt auf der Kurve erzeugen. Dieser Punkt ist gleichzeitig Endpunkt für zwei Teilkontrollpolygone: P 0 P 1 P 2 P 3 P 01 P 12 P 23 P 012 P 123 P 0123 172
Beispiel Vervollständigen Sie die Skizze wenn t = ½ ist. Dies sieht möglicherweise zunächst eher nach einer Spielerei aus als nach einem Verfahren, das einen praktischen Nutzen bietet (warum sollte man Bézier-Kurven so teilen?). 173
Fehlerabschätzungen Diese Einschätzung ändert sich allerdings schnell, wenn man überlegt, dass das äquidistante Abtasten des Intervalls von t in [0.. 1] zwar eine Bézier- Kurve erzeugt, die generierten Punkte bzw. die Dichte der generierten Punkte in keiner Weise Steigungsänderungen Rechnung tragen. Der de Casteljau-Algorithmus kann dazu verwendet werden, Punkte auf der Kurve zu erzeugen, die eine vorgegebene Fehlertoleranz gewährleisten und dennoch die Anzahl der generierten Punkte minimiert. Prinzipiell wird immer wieder der de Casteljau angewendet; zu klären ist nur noch, wann dieses Vorgehen terminiert. Eine Schwierigkeit bei der Fehlerabschätzung ist, dass der tatsächliche Punkt auf der Kurve nicht bekannt ist, wenn das Verfahren durchgeführt wird: 174
Fehlerabschätzungen Man geht also so vor, dass man den Fehler etwas gröber abschätzt (nämlich als Abstand von P 1 zu P 0 P 3 bzw. P 2 zu P 0 P 3 ): P1 P2 < flatness P3 P0 P1 175
Das Problem: Abstand Punkt-Gerade (I) L(t) = P + t * v Skalarprodukt verwenden: R Q (R-L(t)) * v = 0 (R P t * v) * v = 0 (R - P ) * v = t * v * v P v t = (R - P) * v / v * v (nicht kürzen; v ist ein Vektor!) t in (I) einsetzen liefert benötigten Punkt auf der Geraden, dann kann dist berechnet werden: dist = R P + ((R - P) * v) / (v * v) * v Alternative Berechnung: Information über die Fläche nutzen... 176
Fehlerabschätzungen P 1 P 3 x P 0 P 3 P 1 P 1 = flatness (P 0 P 3 ) P 1 P 3 x P 0 P 3 liefert die Größe der aufgespannten Fläche; wenn man nun die Fläche des Parallelogramms durch die Länge der einen Seite teilt, erhält man die Länge genau das suchen wir der anderen Seite. Da diese Abschätzung einigermaßen oft erfolgt, sollte die Längenberechnung weiter vereinfacht werden (sie beinhaltet immerhin 2 Multiplikationen und 1 Wurzelberechnung!). Dazu gehen wir zu einer Maximumsabschätzung über und formen die Ungleichung zusätzlich wie folgt um: max { P 1 P 3 x P 0 P 3, P 2 P 3 x P 0 P 3 } = flatness * max { X 3 X 0, Y 3 -Y 0, Z 3 -Z 0 } 177
Bézierflächen Die Überlegungen bzgl. Kurven lassen sich relativ einfach auf Flächen im 3D erweitern. Man betrachtet dann das kartesische Produkt zweier Kurven. für die beiden Richtungen werden dann zwei Gewichtungsfunktionen benutzt: n m P(s, t) = P i,j * B i, n (s) * B j, m (t) i = 0 j = 0 Man hat dann (n+1) x (m+1) viele Kontrollpunkte Für n = m = 3 hat man nun 4 * 4 = 16 Kontrollpunkte. 178
Bézierflächen Hält man einen der beiden Parameter konstant, so erhält man eine Bézierkurve. Insbesondere ist für s = 0 das Ergebnis die bekannte Bézierkurve: m P(0, t) = P i,0 * B j, m (t) j = 0 Auch hier setzt man wieder zur Beschreibung einer Fläche verschiedene Bézier-Flächenstücke zusammen. 179
Bézierflächen Freiformflächen (Bézier-Flächen) Bei den Freiformflächen sind wir nun mit 3D-Daten konfrontiert, die bereits größere Datenmengen in der Visualisierungspipeline erzeugen und (hoffentlich) deutlich machen, welche Schritte zur Visualisierung notwendig sind. Die Freiformfläche wird in kleine Flächenstücke (Patches) zerlegt und solange verfeinert bis das Auge eine glatte, kontinuierliche Oberfläche erzeugt. So werden aus den ursprünglichen 4 x 4 Stützstellen 16*16 = 256 Patches bei einer 16er-Teilung (mit 17 x 17 Punkten) oder möglicherweise sogar noch mehr. Jedem Patch wird eine Farbe zugeordnet. 180
Freiformflächen (I) Ergebnisse der Arbeiten von Matthias Fenner, Susanne Hanst, Matthias Schulze im Sommersemester 2004 181
Freiformflächen (II) Manipulation der Kontrollpunkte 182
Freiformflächen (III) Bézier Spline 183
Abschließende Bewertung Die Vorteile der Bézierapproximation sind intuitiv herleitbare Mathematik (einfache) Definition durch Polynome Patches können einfach (ohne Angabe von Tangentenvektoren) zusammengesetzt werden glättende Wirkung Die Nachteile der Bézierapproximation sind der Grad der Kurve/Fläche und somit der Berechnungsaufwand ist abhängig von der Anzahl der vorgegebenen Stützstellen bei der Veränderung einer Stützstelle ändert sich die gesamte Kurve/Fläche; lokale Änderungen erfordern eine vorherige Segmentierung 184
Splines (I) Eine Verallgemeinerung der Überlegungen durch Splines (Keil, verkeilen) muss zu folgenden Vorteilen führen: Segmentweise Definition von Polynomen Stetigkeit an den Segmentübergängen Erhöhung des Freiheitsgrades ohne Erhöhung des Polynomgrades Leichte Formgebung (wie Bézier) Keine (zusätzliche) Angabe von Tangentenvektoren Glättende Wirkung Lokale Änderungen sollen sich nur lokal auswirken Diese Eigenschaft besitzen die B(asis)-Splines 185
Splines (II) Durch die Betrachtung von Segmenten, kann die entstehende Kurve gut kontrolliert werden Sie ist abschnittsweise definiert Es überlagern sich immer k Segmente (neben der Anzahl und Position der Kontrollpunkt eine weitere Stellgröße) An den Übergängen geht die Kontrolle nahtlos an das nächste Segment über Das Beispiel kann einen Spline 2. Grades oder 3. Grades erzeugen (warum?): P 0 P 1 u 1 u 2 P 3 u4 P 2 u 3 186
B-Splines B-Splines stellen eine Polynombasis für Splines dar. Jeder Spline kann - unter Beachtung einiger Randbedingungen! - durch eine Linearkombination von B-Splines beschrieben werden Ein B-Spline der Ordnung k ist ein stückweise definiertes Polynom vom Grad (k-1), das an den Knoten (Segmentübergängen) (k-2)-mal stetig differenzierbar ist; für k gilt: 2 k anz Die Werte u i der unabhängigen Variablen an den Knoten des Splines sind im Intervall [u 0, u n ] gegeben durch u 0 u 1... u i u i+1... u n U mit (u 0... u n ) heißt Knotenvektor 187
B-Spline Berechnung Ein Punkt ergibt sich durch die folgende Berechnung: n P(u) =Σ P i N k i (u) i = 0 P i sind die Kontrollpunkte oder de Boor Punkte Sie besitzen folgende Eigenschaften Σ N k i (u) = 1 N k i (u) 0 N k i (u) = 0 wenn u [u i, u i+k+1 [ N k i (u) ist k-1 mal stetig differenzierbar 188
Rekursionsformel: Cox de Boor u - u N i,k (u) = i u N i,k-1 (u) + i+k -u N i+1,k-1 (u) u i+k-1 -u i u i+k u i+1 N i,1 (u) = 1 wenn u [u i, u i+1 [ N i,1 (u) = 0 wenn u [u i, u i+1 [ nach Definition gilt: 0 / 0 = 0 Beispiel für i = 0 und k = 3 N 0,3 (u) = ½ (1 u) 2 P 0 + (-u 2 + u + ½ ) P 1 + ½*u 2 P 2 189
B-Spline Funktion und Kurve 0. Grades(I) N i,k (u) 1 N 0,1 (u) N 1,1 (u) N 2,1 (u) N 3,1 (u) etc u 0 u 1 u 2 u 3 u 4 u n P(u) = Σ P i *N i,k (u) i=0 190
B-Spline Funktion und Kurve 1. Grades (II) N i,k (u) 1 N 0,2 (u) N 1, 2 (u) N 2,2 (u) N 3,2 (u) etc u 0 u 1 u 2 u 3 u 4 P P n 1 0 P(u) = Σ P i *N i,k (u) u 1 u 2 i=0 P 3 u 4 u P 2 u 3 191
Uniform B-Splines B-Splines mit einfachen, äquidistanten, ganzzahligen Knoten nennt man uniform B-Splines U = (u 0... u n ) mit u i = i und i [ 0, 1, 2,..., n-1] Sie besitzen periodische Basisfunktionen 192
Beispiel k = 3; n = 4; k = 4; U = {0, 1, 2, 3, 4, 5, 6}; U = {0, 1, 2, 3, 4, 5, 6, 7}; 193
Beispiel n = 4; k = 3; k = 4; U = {0, 1, 2, 3, 4, 5, 6}; U = {0, 1, 2, 3, 4, 5, 6, 7}; Somit ergeben sich für die Beispiele die folgenden Intervalle: u {2,4} u {3,4} 0 1 2 3 4 5 6 0-1 - 2-3 - 4 5 6 7 0 1 + 2 + 3 + 4 5 6 0 1 + 2 + 3 + 4 + 5 6 7 0 1 2 o 3 o 4 o 5 6 0 1 2 o 3 o 4 o 5 o 6 7 0 1 2 3 x 4 x 5 x 6 0 1 2 3 x 4 x 5 x 6 x 7 194
Nonuniform B-Splines (I) B-Splines mit mehrfachen Knoten besitzen keine periodischen Funktionen Soll ein B-Spline mit m+1 Stützstellen und k-ter Ordnung so modelliert werden, dass Anfangs- und Endpunkt von Kontrollpolygon und Kurve zusammenfallen, muss der Knotenvektor folgende Form besitzen: U = (u 0 =u 1 =... = u k-1, u k,u k+1,...,u m,u m+1,= u m+2 =... = u m+k ) k-fach m-k+1 k-fach 195
Nonuniform B-Splines (II) für die u i gilt 0 für i = 0,..., k -1 u i = i k + 1 für i = k,..., n -1 m k + 2 für i = n,..., n + k +1 Der Knotenvektor [0,0,0,0,1,2,..., n-1,n,n,n,n] erzeugt einen kubischen B-Spline (hier: Ordnung 4, Grad 3) Der Knotenvektor [0,0,0,0,1,1,1,1] erzeugt insbesondere eine kubische Bézierkurve, d.h. Bézierkurven können als Sonderfall der B-Splines betrachtet werden! 196
Nonuniform B-Spline 2. Grades Beispiel Approximation mit 3 Stützstellen (Ordnung 3, Grad 2): 197
β-splines β-splines stellen Verallgemeinerungen der kubischen Splines dar Sie enthalten zwei zusätzliche Parameter, mit denen unabhängig vom Knotenvektor und von Stützstellen des Kontrollpolygons die geometrische Form beeinflusst werden kann die beiden zusätzlichen Parameter beschreiben tension (Spannung) - t = 0 keine Spannung - und skew (Abschrägung/Verdrehung) - s = 1 keine Abschrägung - Sie stellen eine besondere Beschreibung der Basis- /Gewichtungsfunktion dar 198
NURBS Non-Uniform Rational B-Splines bei all den Vorteilen der Splines liegt es nahe, zu überlegen, ob mit Splines auch konventionelle Kurven (Kegelschnitte, Zylinder, Paraboloide) beschrieben werden können, um zu einer einheitlichen rechnerinternen Beschreibung zu kommen (unter Ausnutzung homogener Koordinaten!): n P(i,w) = (w i * x i, w i * y i, w i * z i, w i ) P(u) =Σ P i R k i (u) mit Rk i (u) = i = 0 N k i (u) w i Σ N k j (u) w j j=0..n für w i = 1 ist R k i (u) = N k i (u) 199
Spline Flächen Die Beschreibung einer Spline-Fläche sieht genauso aus wie die Beschreibung einer Bézier-Fläche: n m P(s, t) = P i,j * N i, k (s) * N j, l (t) i = 0 j = 0 Bemerkung: der Grad (k und l) der B-Splines hängt nicht von der Anzahl der Stützstellen ab, sondern kann frei gewählt werden! ENDE. 200