Einführung in CAD Teil 2: Darstellung von Kurven und Flächen Prof. Dr. Jürgen Koch 20. November 2015 i Inhaltsverzeichnis I. Motivation II. Kurven und Flächen 1. Exakte und approximative Darstellung 2. Kurven . . . . . . . . . . . . . . . . 2.1. Parameterdarstellung . . . . . 2.2. Tangente . . . . . . . . . . . 2.3. Krümmung . . . . . . . . . . 3. Flächen . . . . . . . . . . . . . . . . 3.1. Parameterdarstellung . . . . . 3.2. Spezielle Flächen . . . . . . . 3.3. Tangentialebene . . . . . . . 3.4. Kurven auf Flächen . . . . . 3.5. Getrimmte Flächen . . . . . . 4. Übungen . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 6 7 11 15 18 18 18 24 26 28 29 III. NURBS 1. Bernsteinpolynome . . . . . . . . . . . . . . . . 1.1. Definition der Bernsteinpolynome . . . . 1.2. Rekursionsformel der Bernsteinpolynome 1.3. Eigenschaften der Bernsteinpolynome . . 1.4. Ableitung der Bernsteinpolynome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 31 33 34 37 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii Inhaltsverzeichnis 2. 3. 4. 5. 6. Bézier–Kurven . . . . . . . . . . . . . . . 2.1. Definition der Bézier–Kurven . . . 2.2. Eigenschaften der Bézier–Kurven . 2.3. Der de Casteljau Algorithmus . . . 2.4. Ableitung der Bézier–Kurven . . . 2.5. Rationale Bézier–Kurven . . . . . . B–Splines . . . . . . . . . . . . . . . . . . 3.1. Lineare Splines . . . . . . . . . . . 3.2. Definition der B–Splines . . . . . . 3.3. Rekursionsformel der B–Splines . . 3.4. Eigenschaften der B–Splines . . . . B–Spline–Kurven . . . . . . . . . . . . . . 4.1. Definition der B–Spline–Kurven . . 4.2. Eigenschaften der B–Spline–Kurven 4.3. Der Knoten–Einfügen–Algorithmus 4.4. Rationale B–Spline–Kurven . . . . Flächen . . . . . . . . . . . . . . . . . . . 5.1. Tensorproduktflächen . . . . . . . 5.2. Bézier–Flächen . . . . . . . . . . . 5.3. B–Spline–Flächen . . . . . . . . . 5.4. NURBS . . . . . . . . . . . . . . . Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 38 39 41 42 43 45 46 52 53 57 61 61 64 67 72 73 73 76 80 82 83 1 I Motivation 2 I Motivation 3 II Kurven und Flächen CAD–Systeme verwenden Punkte, Kurven und Flächen um Objekte im zweidimensionalen oder dreidimensionalen Raum zu beschreiben. Neben der Beschreibung statischer Objekte spielt die Kinematik eine wichtige Rolle. 1. Exakte und approximative Darstellung Abbildung II.1.: Darstellung einer Kugel durch ein Polygonnetz. 4 II Kurven und Flächen Zwei verschiedene Darstellungsformen für Kurven und Flächen haben sich in den klassischen CAD–Systemen etabliert. Kurven und Flächen besitzen in der Regel mathematisch exakte Darstellungen aus denen zu unterschiedlichen Zwecken näherungsweise Darstellungen abgeleitet werden. Kurven werden in der Regel durch Polygonzüge und Flächen durch Netze aus Dreiecken und Vierecken angenähert. Abbildung 1 zeigt die Darstelllung einer Kugel durch ein Netz aus Vierecken. Abbildung II.2.: Subdivision Flächen. In CAD–Systemen, die vornehmlich in der Unterhaltungsindustrie eingesetzt werden, gewinnen sogenannte Subdivision–Flächen immer mehr an Bedeutung. Aus groben vorgegebenen Kontrollnetzen werden mit Hilfe iterativer Algorithmen glatte Flächen erzeugt. Auch Subdivision–Flächen liegen als Grenzwert definierte exakte mathematische Darstellungen zugrunde. In Abbildung 1 wird die Geometrie des Schachspielers durch eine Subdivision–Fläche beschrieben. Beispiel II.1 (Kreis Approximation) Ein Kreis mit Radius r = 10mm soll mit einer Toleranz tol = 10−2 mm durch ein reguläres n–Eck angenähert werden. 1 Exakte und approximative Darstellung 5 P 2 P P1 3 α P6 P 4 P5 Abbildung II.3.: Kreis Approximation. Bei einem n–Eck ist der Winkel α = πn . Die Toleranz kann man durch π tol = r − r · cos n bestimmen. Auflösen nach n ergibt π n= arccos 1 − tol r ≈ 70.2423. Zur Einhaltung der Toleranz sind mindestens 71 Punkte notwendig. Berücksichtigt man pro Punkt eine x– und eine y–Koordinate, so müssen insgesamt 142 Werte gespeichert werden. Hingegegen benötigt die mathematisch exakte Darstellung lediglich drei Werte zum Speichern der x– und y–Koordinaten des Mittelpunktes und des Radius. Die Approximation des Einheitskreises durch ein Polynom benötigt in diesem Beispiel fast 50 mal mehr Daten als die mathematisch exakte Darstellung. 6 II Kurven und Flächen Bei unserer gewählten Approximation liegt das Polygon komplett im Innern des Einheitskreises. Man kann die Kreisapproximation noch dadurch verbessern, dass man die Punkte des regulären n–Ecks auf einen Kreis mit optimal gewähltem Radius legt, vgl Übungsaufgabe II.1. Diese Verbesserung führt jedoch nicht zu einer deutlichen Verkleinerung von n. Das Beispiel der Approximation des Kreises zeigt bereits die beiden wesentlichen Gründen dafür, dass man in CAD–Systemen mathematisch exakte Darstellungen für Kurven und Flächen verwendet. Mathematisch exakte Darstellung Die mathematisch exakte Darstellung von Kurven und Flächen hat im Vergleich zur Darstellung mit Hilfe von Polygonzügen oder Netzen zwei entscheidende Vorteile: (a) Die Beschreibung von Objekten mit Hilfe mathematischer Formeln benötigt weniger Daten und führt häufig zu effizienteren Algorithmen. (b) Polygonzüge oder Netze haben Knicke oder eventuell sogar Löcher, was bei manchen Operationen zu Problemen führen kann. 2. Kurven Auf den ersten Blick scheinen CAD–Modelle ausschließlich durch Flächen beschrieben zu sein. Bei genauerer Betrachtung stellt man jedoch fest, dass auch Kurven eine große Bedeutung haben. Die meisten Flächen 2 Kurven 7 werden über Profilkurven erzeugt. An Stellen an denen Flächen zusammentreffen entstehen Schnittkurven. Teilflächen und Löcher in Flächen werden mit Hilfe von Trimmkurven beschrieben. Nicht zuletzt erfolgt die Beschreibung einer Kinimatik durch Kurven. Die mathematische Beschreibung von Kurven ist einfacher als die Beschreibung von Flächen. Wir wollen uns zunächst mit den wichtigsten Begriffen für Kurven vertraut machen. 2.1. Parameterdarstellung Die ersten Kurven haben wir bereits in der Schule kennengelernt, sie sind Schaubilder von Funktionen. Das Schaubild einer Funktion stellt eine ebene Kurve dar. Allerdings lässt sich umgekehrt nicht jede Kurve als Schaubild einer Funktion darstellen. Beispiel II.2 (Einheitskreis) Die Kreisgleichung x2 + y 2 = 1 bezeichnet man als implizite Darstellung des Einheitskreises. Ein Punkt mit den Koordinaten (x/y) liegt auf dem Einheitskreis, wenn die Gleichung erfüllt ist. Beispielsweise erfüllt der Punkt mit den Koordinaten (1/0) die Kreisgleichung, der Punkt mit den Koordinaten (1/1) erfüllt die Kreisgleichung nicht und liegt deshalb auch nicht auf dem Einheitskreis. Bei einer Funktion darf es zu einem x–Wert höchstens einen y–Wert geben. Deshalb kann man den Einheitskreis nicht als Schaubild einer einzigen Funktion darstellen. Man kann sich bei diesem Beispiel jedoch noch dadurch behelfen, dass man den oberen und den unteren Halbkreis jeweils getrennt durch eine Funktion beschreibt. √ √ f1 (x) = + 1 − x2 , f2 (x) = − 1 − x2 , x ∈ [0; 1]. 8 II Kurven und Flächen y 1 −1 √ + 1 − x2 1 −1 x √ − 1 − x2 Abbildung II.4.: Einheitskreis. Beispiel II.3 (Spirale) Bei einer Funktion darf es zu einem x–Wert höchstens einen y–Wert geben. Deshalb kann man eine Spiralkurve nicht als Schaubild einer Funktion darstellen. Die Darstellung mit Hilfe von mehreren Funktion würde sich bei diesem Beispiel auch recht umfangreich gestalten. Bei einer Compact Disk (CD) werden die Daten in Form einer Spiralkurve abgelegt. Im Gegensatz zur Schallplatte läuft die Spur bei einer CD von Innen nach Außen. 2 Kurven 9 Abbildung II.5.: Spirale. Definition II.1 (Parameterdarstellung einer Kurve) Bei der Parameterdarstellung einer Raumkurve hängen die Koordinatenfunktionen x(t), y(t) und z(t) von einem reellen Parameter t ab. x(t) c(t) = y(t) , t ∈ I. z(t) Entsprechend lautet die Parameterdarstellung einer ebenen Kurve x(t) c(t) = , t ∈ I. y(t) Der Parameter t durchläuft dabei ein beliebiges Intervall I ⊂ R. 10 II Kurven und Flächen Beispiel II.4 (Einheitskreis) Die Parameterdarstellung der ebenen Kurve c(t) = cos t sin t , t ∈ [0; 2π] stellt den Einheitskreis dar. Die Koordinatenfunktionen erfüllen die Kreisgleichung x(t)2 + y(t)2 = cos2 t + sin2 t = 1 für alle Parameterwerte t. Beispiel II.5 (Rationale Parametrisierung des Einheitskreis) Weitaus weniger bekannt ist die Darstellung des Einheitskreises mit Hilfe rationaler Funktionen 1 2t c(t) = , t ∈ R. 2 1 + t2 1 − t Offensichtlich erfüllen auch hier die Koordinatenfunktionen die Kreisgleichung x(t)2 + y(t)2 = 4t2 (1 − t2 )2 1 + 2t2 + t4 + = =1 (1 + t2 )2 (1 + t2 )2 (1 + t2 )2 für alle Parameterwerte t. Aus den beiden vorangegangenen Beispielen haben wir gesehen, dass sich der Einheitskreis auf unterschiedliche weise als parametrisierte Kurve darstellen lässt. Die Parameterdarstellung einer Kurve ist also nicht eindeutig. 2 Kurven 11 2.2. Tangente Ein wichtiges Prinzip in der Mathematik besteht darin komplizierte Objekte näherungsweise durch einfacherer Objekte zu ersetzen. Bei Funktionen verwendet man diese Prinzip in dem man eine Funktion durch eine Tangente an einer bestimmten Stelle annähert. Solange man sich in einer kleinen Umgebung der Stelle befindet macht sich der Unterschied zwischen Funktion und Tangente kaum bemerkbar. Das selbe Prinzip lässt sich auf Kurven übertragen. Definition II.2 (Tangentenvektor einer Kurve) Den Tangentenvektor einer Raumkurve c(t) erhält man durch Ableiten der Koordinatenfunktionen nach dem Parameter t 0 x (t) c0 (t) = y 0 (t) , t ∈ I. z 0 (t) Entsprechend ergibt sich der Tangentenvektor einer ebenen Kurve x(t)0 0 c (t) = , t ∈ I. y(t)0 Die Gerade durch den Kurvenpunkt c(t0 ) mit Richtungsvektor c0 (t0 ) nennt man die Tangente der Kurve c(t) zum Parameterwert t0 . Beispiel II.6 (Tangentenvektor einer Kurve) 12 II Kurven und Flächen (a) Die Kurve c(t) = cos t sin t , t ∈ [0; 2π], hat den Tangentenvektor 0 c (t) = − sin t cos t . Für den Parameterwert t = π/2 ergibt sich die Tangente im Punkt (0/1) −1 0 c (0) = 0 und für den Parameterwert t = 0 ergibt sich die Tangente im Punkt (1/0) 0 0 c (1) = . 1 Lediglich die Richtung des Tangentenvektors ändert sich, die Länge |c0 (t)| = sin2 t + cos2 t = 1 ist immer gleich. (b) Die Kurve 1 c(t) = 1 + t2 hat den Tangentenvektor 2t 1 − t2 1 c (t) = (1 + t2 )2 0 , 2 − 2t −4t t ∈ R. . Für den Parameterwert t = 0 ergibt sich die Tangente im Punkt (0/1) 2 0 c (0) = 0 2 Kurven 13 und für den Parameterwert t = 1 ergibt sich die Tangente im Punkt (1/0) 0 0 c (1) = . −1 Es ändert sich also nicht nur die Richtung des Tangentenvektors, sondern auch die Länge. y y 1 1 −1 1 −1 x −1 1 x −1 Abbildung II.6.: Unterschiedliche Parametrisierung des Einheitskreises. In Beispiel II.6 haben wir gesehen, dass unterschiedliche Parametrisierungen dieselbe Kurve beschreiben können. Die Richtung der Tangentenvektoren ist unabhängig von der gewählten Parametrisierung. Die Wahl der Parametrisierung hat jedoch Einfluß auf die Länge der Tangentenvektoren. Man bezeichnet deshalb die Richtung der Tangente als eine geometrische Eigenschaft der Kurve. Die Länge der Tangente ist keine geometrische Eigenschaft der Kurve, denn sie hängt von der gewählten Parametrisierung ab. Bei dem Schaubild in Abbildung 2.2 wurden für jeweils 50 gleichmäßig verteilte Parameterwerte Punkte gezeichnet Bei der Parametrisierung auf 14 II Kurven und Flächen der linken Seite ändert sich die Länge der Tangentenvektoren nicht. Die Kurve wird mit konstanter Geschwindigkeit durchlaufen. Die Parametrisierung auf der rechten Seite erzeugt Tangentenvektoren mit stark unterschiedlicher Länge. Die Geschwindigkeit variiert beim Durchlauf der Kurve stark. Für den Einsatz in Produktionsprozessen sind Parameterdarstellungen mit konstanter Geschwindigkeit besonders gut geeignet. Eine Parameterdarstellung mit der Eigenschaft |c0 (t)| = 1 nennt man Bogenlängenparametrisierung einer Kurve. Diese Parametrisierung ist eindeutig. Allerdings ist es bei praktischen Problemen oft schwierig die Bogenlängenparametrisierung einer Kurve zu bestimmen. Beispiel II.7 (Schraubenlinie) Abbildung II.7.: Schraubenlinie. Die Parameterdarstellung einer Schraubenlinie mit Grundkreisradius a und 2 Kurven 15 Ganghöhe h lautet a · cos t c(t) = a · sin t , h ·t 2π t ∈ [0; 2πn]. Die Anzahl der Windungen wird durch das Parameterintervall, d.h. durch n festgelegt. 2.3. Krümmung Die Krümmung einer Kurve ist ein Maß dafür, wie weit die Kurve von der Tangente abweicht. Zur Berechnung der Krümmung benötigt man die ersten und zweiten Ableitungen der Koordinatenfunktionen. Definition II.3 (Krümmung einer ebenen Kurve) Die Krümmung κ(t) einer ebenen Kurve c(t) mit den Koordinatenfunktionen x(t) und y(t) ist definiert durch x0 (t)y 00 (t) − x00 (t)y 0 (t) κ(t) = . (x0 (t)2 + y 0 (t)2 )3/2 Beispiel II.8 (Krümmung einer ebenen Kurve) (a) Bei einer Geraden ist x00 (t) = 0, y 00 (t) = 0 und somit auch die Krümmung κ(t) = 0. 16 II Kurven und Flächen (b) Der Einheitskreis c(t) = cos t sin t t ∈ [0; 2π], , hat die Krümmung sin2 t + cos2 t κ(t) = = 1. 3/2 2 cos2 t + sin t Definition II.4 (Krümmungskreis einer ebenen Kurve) Der Mittelpunkt des Krümmungskreises einer ebenen Kurve im Punkt c(t0 ) liegt auf der Geraden die senkrecht zur Tangente durch den Punkt c(t0 ) verläuft. Er hat den Abstand R(t0 ) = 1 κ(t0 ) zum Kurvenpunkt. Somit entspricht der Krümmungskreisradius dem Kehrwert der Krümmung. Beispiel II.9 (Krümmungskreis einer ebenen Kurve) Die Parabel c(t) = t t2 , t ∈ R, 1 2t hat den Tangentenvektor c’(t) = 2 Kurven 17 und die Krümmung κ(t) = 2 (1 + 4 t2 )3/2 . Definition II.5 (Krümmung einer Raumkurve) Die κ(t) einer Raumkurve c(t) ist definiert durch κ(t) = Krümmung |c0 (t) × c00 (t)| . |c0 (t)|3 Die Definition der Krümmung einer ebenen Kurve ist ein Spezialfall der Definition der Krümmung einer Raumkurve. Eine ebene Kurve kann man als Raumkurve interpretieren, die in der Ebene z = 0 liegt. 0 00 x(t) x (t) x (t) c(t) = y(t) ⇒ c0 (t) = y 0 (t) ⇒ c00 (t) = y 00 (t) . 0 0 0 Somit ist |c0 (t)| = x0 (t)2 + y 0 (t)2 1/2 und |c0 (t) × c00 (t)| = |x0 (t)y 00 (t) − x00 (t)y 0 (t)| . Auch für Raumkurven kann man Krümmungskreise definieren. Allerdings benötigt man dazu Begriffe aus der Differentialgeometrie (Schmiegungsebene, begleitendes Dreibein, usw.) die weit über unsere einfachen Betrachtungen von Kurven hinausführen. 18 II Kurven und Flächen 3. Flächen 3.1. Parameterdarstellung Definition II.6 (Parameterdarstellung einer Fläche) Bei der Parameterdarstellung einer Fläche hängen die Koordinatenfunktionen x(u, v), y(u, v) und z(u, v) von zwei reellen Parameter u und v ab x(u, v) S(u, v) = y(u, v) , u, v ∈ I. z(u, v) Die Parameter u und v durchlaufen dabei einen Bereich in der reellen Ebene R2 . 3.2. Spezielle Flächen Rotationsflächen Rotationsflächen sind Flächen, die im Querschnitt aus konzentrischen Kreisen bestehen. Die Achse der Kreismittelpunkte bezeichnet man als Rotationsachse. Wir wollen uns in der folgenden Darstellung darauf beschränken als Rotationsachse die z–Achse zu verwenden. Zur Beschreibung einer Rotationsfläche gibt man dann zu jedem z–Wert z(t) einen gewissen Radius r(t) vor. 3 Flächen 19 Rotationsfläche Die Rotation einer ebenen Profilkurve mit der Prameterdarstellung r(t) c(t) = , t ∈ I, z(t) um die z–Achse erzeugt eine Rotationsfläche mit der Parameterdarstellung r(u) · cos v S(u, v) = r(u) · sin v , u ∈ I, v ∈ [0; 2π]. z(u) Beispiel II.10 (Kugel als Rotationsfläche) Eine Kugel entsteht durch Rotation eines Halbkreises. Den Halbkreis kann man als parametrisierte Kurve durch h π πi cos t c1 (t) = , t∈ − ; , sin t 2 2 darstellen. Dadurch erhält man die Parametrisierung der Regelfläche cos u · cos v S(u, v) = cos u · sin v , sin u h π πi u∈ − ; , v ∈ [0; 2π]. 2 2 20 II Kurven und Flächen Beispiel II.11 (Torus als Rotationsfläche) Ein Torus entsteht durch Rotation eines Vollkreises. Den Vollkreis kann man als parametrisierte Kurve durch 2 + cos t c1 (t) = , t ∈ [0; 2π], sin t darstellen. Dadurch erhält man die Parametrisierung der Regelfläche (2 + cos u) · cos v S(u, v) = (2 + cos u) · sin v , sin u u ∈ [0; 2π], v ∈ [0; 2π]. Regelflächen Regelfläche Verbindet man zwei Raumkurven c1 (t) und c2 (t), die über dem selben Intervall I1 parametrisiert sind, durch Geraden, so entsteht eine Regelfläche mit der Parameterdarstellung S(u, v) = c1 (u) + v · c2 (u), u ∈ I1 , v ∈ I2 . 3 Flächen 21 Beispiel II.12 (Kreiszylinder als Regelfläche) Verwendet man für c1 (t) einen Kreis in der x–y–Ebene cos t c1 (t) = sin t , t ∈ [0; 2π], 0 und für c2 (u) = a einen konstanten Richtungsvektor, dann entsteht der Kreiszylinder S(u, v) = c1 (u) + v · a, u ∈ [0; 2π], v ∈ [0; 1]. Verbindungsfläche Wichtige Beispiele für Regelflächen sind Verbindungsflächen zwischen zwei Kurven, S(u, v) = (1 − v) · c1 (u) + v · c2 (u), u ∈ I1 , v ∈ [0; 1]. Für v = 0 ergibt sich c1 (u) und für v = 1 ergibt sich c2 (u). Beispiel II.13 (Bilineare Fläche) Die Strecke zwischen den beiden Punkten P00 und P10 kann man als parametrisierte Kurve darstellen c1 (u) = (1 − u) · P00 + u · P10 , u ∈ [0; 1]. 22 II Kurven und Flächen Analog stellt man das Geradenstück zwischen den beiden Punkten P01 und P11 als parametrisierte Kurve dar c2 (u) = (1 − u) · P01 + u · P11 . u ∈ [0; 1]. Aus diesen beiden Kurven bildet man die Verbindungsfläche S(u, v) = (1 − v) · c1 (u) + v · c2 (u), u ∈ [0; 1], v ∈ [0; 1]. Durch Einsetzen ergibt sich die bilineare Fläche mit den Eckpunkten P00 , P01 , P10 und P11 S(u, v) = (1 − u)(1 − v) · P00 + (1 − u)v · P01 + u(1 − v) · P10 + uv · P11 . Beispiel II.14 (Rotationshyperboloid als Regelfläche) Die beiden Kreise cos t c1 (t) = sin t 0 und cos(t + π2 ) c2 (t) = sin(t + π2 ) , 2 liegen parallel zueinander im Abstand 2. Bei dem selben t–Wert sind die Kreise um π2 gegeneinander verdreht. Die erzeugte Regelfläche hat die Parameterdarstellung S(u, v) = (1 − v) · c1 (u) + v · c2 (u), u ∈ [0; 2π], v ∈ [0; 1]. 3 Flächen 23 Abwickelbare Flächen Bei vielen Anwendungen spielen abwickelbare Flächen eine wichtige Rolle. Man bezeichnet eine Fläche als Abwickelbar, wenn die Fläche ohne Verzerrung in die Ebene abgebildet werden kann. In der Computergrafik erzeugen Texturen auf abwickelbaren Flächen unverzerrte Bilder. Bei Produktionsprozessen lassen sich abwickelbare Flächen aus ebenen Blechteilen einfach herstellen. Abwickelbare Fläche Eine Regelfläche mit der Parameterdarstellung S(u, v) = c1 (u) + v · c2 (u), u ∈ I1 , v ∈ I2 . ist genau dann abwickelbar, wenn die Determinante |c2 (u) c02 (u) c1 (u)| für alle u Werte Null ist. Das Kriterium für abwickelbare Flächen hängt mit den Krümmungseigenschaften der Fläche zusammen. Aus der Differentialgeometrie ist bekannt, dass sich alle abwickelbaren Flächen als Regelflächen darstellen lassen. Genauer gesagt ist jede abwickelbare Fläche Teil eines Zylinders, eines Kegels oder einer Tangentenfläche. Beispiel II.15 (Zylindrische Flächen sind abwickelbar) Eine zylindrische Fläche mit Profilkurve c1 (t) kann durch S(u, v) = c1 (u) + v · a, u ∈ I1 , v ∈ I2 , 24 II Kurven und Flächen als Regelfläche dargestellt werden. Dadurch dass die Kurve c2 (u) = a konstant ist, ist c02 (u) = 0. Die Matrix in der Determinante enthält eine Spalte mit Nullen und somit ist die Determinante für alle u–Werte 0. Dreiecksflächen Bei den bisher betrachteten Flächen war das Parametergebiet stets rechtecksförmig. Beispiel II.16 (Dreiecksfläche) Aus drei Punkten P100 , P010 und P001 im Raum entsteht eine Dreiecksfläche S(u, v) = u · P100 + v · P010 + w · P001 , w = 1 − u − v, Die Parameter durchlaufen dabei einen dreiecksförmigen Definitionsbereich in R2 u ∈ [0; 1], v ∈ [0; 1], 0 ≤ u + v ≤ 1. 3.3. Tangentialebene Definition II.7 (Tangentialebene) Das Kreuzprodukt der beiden partiellen Ableitungen Su (u, v) × Sv (u, v) einer Fläche S(u, v) an der Stelle (u0 , v0 ) legt die Richtung des Normalenvektors n fest. Die Ebene senkrecht zu n durch den Flächenpunkt S(u0 , v0 ) bezeichnet man als Tangentialebene an der Stelle (u0 , v0 ). 3 Flächen 25 Beispiel II.17 (Tangentialebene der Kugel) Die Parametrisierung der Kugel cos u · cos v S(u, v) = cos u · sin v sin u liefert die partiellen Ableitungen − sin u · cos v Su (u, v) = − sin u · sin v , cos u − cos u · sin v Sv (u, v) = cos u · cos v . 0 An der Stelle (0, 0) hat der Normalenvektor die Richtung 0 0 −1 n = 0 × 1 = 0 . 1 0 0 Der Normalenvektor der Tangentialebene im Flächenpunkt 1 0 S(0, 0) = 0 zeigt also in Richtung der x–Achse. 26 II Kurven und Flächen Beispiel II.18 (Normalenvektoren des Torus) 3.4. Kurven auf Flächen Kurven auf Flächen Eine ebene Kurve in der u–v–Ebene u(t) c2D (t) = , v(t) t∈I erzeugt durch Einsetzen in die Parameterdarstellung der Fläche eine Raumkurve c3D (t) = S(c2D (t)) = S(u(t), v(t)), t ∈ I. 3 Flächen 27 Beispiel II.19 (Kurven auf Kreiszylinder) Die Gerade in der u–v–Ebene besitzt die Parameterdarstellung c2D (t) = 2πt 3t , t ∈ [0; 1]. v 3 2 1 π 2π u Durch Einsetzen in die Parameterdarstellung des Zylinders cos(u) S(u, v) = sin(u) v ergibt sich die Schraubenlinie. cos(2πt) c3D (t) = S(c2D (t)) = sin(2πt) , 3t t ∈ [0; 1]. 28 II Kurven und Flächen 3.5. Getrimmte Flächen Getrimmte Flächen Ebene geschlossene Kurven in der u–v–Ebene u(t) c(t) = , t∈I v(t) kann man dazu verwenden um Teile einer Fläche zu spezifizieren. Ja nach Umlaufsinn wird der Teil innerhalb der Kurve entfernt oder bleibt erhalten. Beispiel II.20 (Getrimmter Kreiszylinder) Bei einer mathematisch positiv orientierten Trimmkurve werden in der Regel die Punkte, deren Parameterwerte innerhalb der Kurve liegen entfernt. v 3 2 1 π 2π u 4 Übungen 29 Bei einer mathematisch negativ orientierten Trimmkurve werden in der Regel die Punkte, deren Parameterwerte außerhalb der Kurve liegen entfernt. v 3 2 1 π 2π u 4. Übungen Uebung II.1 (Kreis Approximation) Der Einheitskreis soll durch ein reguläres 6–Eck möglichst gut approximiert werden. Die Punkte sollen dabei nicht zwingend auf dem Einheitskreis liegen. Bestimmen Sie die optimale Lage der sechs Punkte. Wie gross ist dann der Fehler zwischen Kreis und 6–Eck maximal? Uebung II.2 (Spirale) Die Spiralkurve in Abbildung II.3 verläuft mit 10 Umdrehungen vom Startpunkt (1/0) in den Endpunkt (0/0). Bestimmen Sie eine Parameterdarstellung der Kurve. 30 II Kurven und Flächen Uebung II.3 (Schraubenlinie) Bestimmen Sie die Bogenlängenparametrisierung der Schraubenlinie aus Beispiel II.7. Uebung II.4 (Krümmungskreis einer ebenen Kurve) Die Parabel c(t) = t t2 geht für den Parameterwert t = 1 durch den Punkt (1/1). Bestimmen Sie die Tangente im Kurvenpunkt (1/1). Welche Krümmung hat die Kurve im Kurvenpunkt (1/1)? Bestimmen Sie den Mittelpunkt des Krümmungskreises zu diesem Kurvenpunkt. Uebung II.5 (Rotationshyperboloid) Ist das Rotationshyperboloid aus Beispiel II.14 eine abwickelbare Fläche ? Uebung II.6 (Normalenvektor des Torus) Bestimmen Sie für den Torus aus Beispiel II.11 die Normalenvektoren. 31 III NURBS Die meisten CAD–Systeme verwenden Non–Uniform–Rational-Bspline– Surfaces (NURBS) zur mathematischen Beschreibung von Kurven und Flächen. 1. Bernsteinpolynome Die Bernsteinpolynome wurden im Jahre 1911 von dem russischen Mathematiker Sergei Natanowitsch Bernstein verwendet um den Approximationssatz von Weierstraß zu beweisen. Rund 50 Jahre später verwendeten Paul de Faget de Casteljau bei Citroen und Pierre Bézier bei Renault unabhängig voneinander die Bernsteinpolynome zum Design von Kurven und Flächen. 1.1. Definition der Bernsteinpolynome Bei theoretischer Betrachtung sind Bernsteinpolynome eigentlich gar nicht so aufregend. Betrachtet man jedoch die vielfältigen industriellen Anwendungen dann ist die Idee Polynome anstatt in der Monomform 1, x, x2 , x3 , . . . 32 III NURBS in einer auf das Intervall [0, 1] zentrierten Form zu verwenden bahnbrechend. Diese Idee bildet die Grundlagen für das heutige Verständnis von Freiformkurven und Flächen. Definition III.1 (Bernsteinpolynome) Die d + 1 Bernsteinpolynome vom Grad d sind definiert durch d i d Bi (x) = x (1 − x)d−i , i = 0, 1, 2, . . . , d. i Beispiel III.1 (Bernsteinpolynome) Die beiden Bernsteinpolynome vom Grad d = 1 sind B01 (x) = 1 − x, y 1 B11 (x) = x. Die drei Bernsteinpolynome vom Grad d = 2 sind B02 (x) = (1 − x)2 , 1 x 1 x y 1 B12 (x) = 2x (1 − x) , B22 (x) = x2 . 1 Bernsteinpolynome Die vier Bernsteinpolynome vom Grad d = 3 sind B03 (x) = (1 − x)3 , 33 y 1 B13 (x) = 3x (1 − x)2 , B23 (x) = 3x2 (1 − x) , 1 x B33 (x) = x3 . Bernsteinpolynome über [0, 1] Bernsteinpolynom betrachtet man in der Regel nur für x–Werte aus dem Intervall [0, 1]. In diesem Intervall haben alle Bernsteinpolynome Werte zwischen 0 und 1. 1.2. Rekursionsformel der Bernsteinpolynome Eine der Schlüsseleigenschaften der Bernsteinpolynome bildet die Rekursionsformel. Mit ihrer Hilfe werden wir später einen einfachen Algorithmus zur Berechnung von Werten bei Bézier–Kurven angeben können. Rekursionsformel der Bernsteinpolynome Das Bernsteinpolynom Bid (x) vom Grad d lässt sich durch lineare Interpolation von zwei Bernsteinpolynomen vom Grad d − 1 erzeugen d−1 Bid (x) = (1 − x) · Bid−1 (x) + x · Bi−1 (x). 34 III NURBS Bei der Rekursionsformel verwendet man die Konvention, dass die Bernsteinpolynome vom Grad d mit Index −1 Null sind, d B−1 (x) = 0. Beispiel III.2 (Rekursionsformel der Bernsteinpolynome) Laut Definition ist B13 (x) = 3x(1 − x)2 . Die Rekursionsformel ergibt B13 (x) = (1−x)B12 (x)+xB02 (x) = (1−x)(2x(1−x))+x(1−x)2 = 3x(1−x)2 . 1.3. Eigenschaften der Bernsteinpolynome Endpunkteigenschaft der Bernsteinpolynome An der Stelle x = 0 haben alle Bernsteinpolynome, ausser B0d (x), den Wert 0. B0d (x) hat den Wert 1. An der Stelle x = 1 haben alle Bernsteinpolynome, ausser Bdd (x), den Wert 0. Bdd (x) hat den Wert 1. 1 Bernsteinpolynome 35 Bernsteinpolynome bilden Zerlegung der 1 Die Bernsteinpolynome bilden eine Zerlegung der 1, d.h. die Summe aller d + 1 Bernsteinpolynome hat für jeden x–Wert den Wert 1, B0d (x) + B1d (x) + . . . + Bdd (x) = 1. d (x) entsprechen sich, wenn Die beiden Bernsteinpolynome Bid (x) und Bd−i man x durch 1 − x ersetzt. Symmetrie der Bernsteinpolynome d (x) sind jeDie korrespondierenden Bernsteinpolynome Bid (x) und Bd−i 1 weils spiegelbildlich zu der Geraden x = 2 1 1 d d Bi + h = Bd−i −h . 2 2 Maximum der Bernsteinpolynome Jedes Bernsteinpolynom Bid (x) hat im Intervall [0, 1] genau ein Maximum an der Stelle x = di . 36 III NURBS Bernsteinpolynome bilden Basis der Polynome Jedes Polynom vom Grad d lässt sich mit Hilfe der d + 1 Bernsteinpolynome Bid (x) vom Grad d darstellen. Beispiel III.3 (Bernsteinpolynome bilden Basis der Polynome) Das Polynom vom Grad d = 2 p(x) = 1 + 4x − 7x2 soll mit Hilfe der drei Bernsteinpolynome vom Grad d = 2 dargestellt werden. Dazu müssen wir die Werte b0 , b1 und b2 aus der Gleichnung b0 B02 (x) + b1 B12 (x) + b2 B22 (x) = 1 + 4x − 7x2 bestimmen. An der Stelle x = 0 gilt b0 = 1 und an der Stelle x = 1 b2 = −2. b1 kann man dann aus der Gleichung (1 − x)2 + b1 · 2(1 − x)x − 2x2 = 1 + 4x − 7x2 berechenen. Durch Umformen 1 + (2b1 − 2)x + x2 (−1 − 2b1 ) = 1 + 4x − 7x2 ergibt sich b1 = 3. 1 Bernsteinpolynome 37 1.4. Ableitung der Bernsteinpolynome Die Berechnung der Ableitung von Bernsteinpolynomen gestaltet sich nicht schwierig. Ableitung der Bernsteinpolynome Die Ableitung eines Bernsteinpolynoms Bid (x) vom Grad d lässt sich als Differenz von zwei Bernsteinpolynomen vom Grad d − 1 darstellen d d d−1 Bi (x) = d Bi−1 (x) − Bid−1 (x) . dx Beispiel III.4 (Ableitung der Bernsteinpolynome) Laut Definition ist B13 (x) = 3x(1 − x)2 und somit d 3 B (x) = 3(1 − x)2 − 6x(1 − x). dx 1 Die Ableitungsformel ergibt d 3 B1 (x) = 3 B02 (x) − B12 (x) dx = 3 (1 − x)2 − 2x(1 − x) . 38 III NURBS 2. Bézier–Kurven Bézier–Kurven verwenden als Koordinatenfunktionen Linearkombinationen von Bernsteinpolynomen. 2.1. Definition der Bézier–Kurven Es ist üblich die Vorfaktoren der einzelnen Bernsteinpolynome in sogenannten Kontrollpunktvektoren zusammen zu fassen. Beispiel III.5 (Koordinatenfunktionen einer Bézier–Kurve) 5 · B02 (t) + 1 · B12 (t) + 4 · B22 (t) c(t) = 1 · B02 (t) + 2 · B12 (t) + 5 · B22 (t) 5 1 4 2 2 2 + B2 (t) , + B1 (t) = B0 (t) 5 1 2 t ∈ [0, 1]. Definition III.2 (Bézier–Kurve) Eine Bézier–Kurve vom Grad d mit d + 1 Kontrollpunkten b0 , b1 , b2 , . . . , bd , besitzt die Parameterdarstellung b(t) = B0d (t)b0 + B1d (t)b1 + B2d (t)b2 + . . . + Bdd (t)bd , t ∈ [0, 1]. 2 Bézier–Kurven 39 2.2. Eigenschaften der Bézier–Kurven Aus den Eigenschaften der Bernsteinpolynome folgen viele Eigenschaften von Bézier–Kurven unmittelbar. Start– und Endpunkt der Bézier–Kurve Eine Bézier–Kurve startet für t = 0 im ersten Kontrollpunkt b0 und endet für t = 1 im letzten Kontrollpunkt bd . Symmetrie der Bézier–Kurve Vertauscht man bei einer Bézier–Kurve die Reihenfolge der Kontrollpunkte bd , . . . , b2 , b1 , b0 , so ändert sich lediglich die Orientierung der Kurve, die Form der Kurve bleibt unverändert. Konvexe Hülle der Bézier–Kurve Eine Bézier–Kurve verläuft vollkommen innerhalb der konvexen Hülle der Kontrollpunkte. Ein Spezialfall der konvexen Hülle Eigenschaft ist die so genannte lineare Präzision. 40 III NURBS Lineare Präzision der Bézier–Kurve Eine Bézier–Kurve, bei der alle Kontrollpunkte auf einer Geraden liegen, ist Teil dieser Geraden. Von zentraler Bedeutung für CAD–Systeme ist die so genannte affine Invarianz. Affine Invarianz der Bézier–Kurve Bei einer Bézier–Kurve spielt es keine Rolle, ob man die komplette Kurve transformiert oder ob man nur die Kontrollpunkte transformiert und dann die Kurve mit den transformierten Kontrollpunkten betrachtet. Das bedeutet, dass man zum Verschieben, Rotieren und Skalieren einer Bézier–Kurve nur die Kontrollpunkte verschieben, rotieren und skalieren muss. Umparametrisierung der Bézier–Kurve Man kann eine Bézier–Kurve so umparametrisieren, dass der neue Parameter u ein beliebiges Intervall [a, b] durchläuft. Dazu verwendet man die Substitution t= u−a , t ∈ [0, 1], b−a u = a + t(b − a), u ∈ [a, b]. 2 Bézier–Kurven Die Bernsteinpolynome Bid (x) haben an der Stelle x = Wert. 41 i d den maximalen Fast lokale Kontrolle der Bézier–Kurve Die Veränderung des Kontrollpunktes bi beeinflusst zwar die gesamte Bézier–Kurve. Allerdings wirkt sich die Veränderung am Parameterwert t = di am meisten aus. 2.3. Der de Casteljau Algorithmus De Casteljau Algorithmus Den Wert einer Bézier–Kurve vom Grad d an einem Parameterwert t kann man in d Schritten mit Hilfe des de Casteljau Algorithmus berechnen. Die neuen Kontrollpunkte teilen die Kanten des alten Kontrollpolygons im Verhältnis (1 − t) zu t. Nach jedem Unterteilungsschritt verringert sich die Anzahl der Kontrollpunkte um 1. Der letzte Kontrollpunkt entspricht dem Wert der Bézier–Kurve. 42 III NURBS Subdivision einer Bézier–Kurve Man kann den de Casteljau Algorithmus auch dazu verwenden eine Bézier–Kurve in zwei Teilkurven aufzuteilen. Die Kontrollpunkte der beiden neuen Teilkurven entstehen aus den Hilspunkten des de Casteljau Algorithmus. 2.4. Ableitung der Bézier–Kurven Ableitung einer Bézier–Kurve Die Ableitung einer Bézier–Kurve vom Grad d ist eine Bézier–Kurve vom Grad d − 1. Die Kontrollpunkte ∆bi der Ableitung kann man direkt aus den Kontrollpunkten der Kurve berechenen ∆bi = d (bi+1 − bi ) . Beispiel III.6 (Ableitung einer Bézier–Kurve) Die erste Ableitung der Bézier–Kurve vom Grad 2 5 1 4 2 2 2 b(t) = B0 (t) + B1 (t) + B2 (t) , 1 2 5 t ∈ [0, 1] 2 Bézier–Kurven 43 ist die Bézier–Kurve vom Grad 1 −4 3 0 1 1 b (t) = B0 (t) + B1 (t) , 1 3 t ∈ [0, 1]. 2.5. Rationale Bézier–Kurven Definition III.3 (Rationale Bézier–Kurve) Eine rationale Bézier– Kurve vom Grad d mit d + 1 Kontrollpunkten b0 , b1 , b2 , . . . , bd , und d + 1 Gewichten ω0 , ω1 , ω2 , . . . , ωd , besitzt für t ∈ [0, 1] die Parameterdarstellung d X b(t) = ωi Bid (t)bi i=0 d X . ωi Bid (t) i=0 Beispiel III.7 (Rationale Bézier–Kurve) Die rationale Bézier–Kurve mit den Kontrollpunkten −1 −1 1 1 b0 = , b1 = , b2 = , b3 = , 0 1 1 0 44 III NURBS und den Gewichten 1 1 ω0 = 1, ω1 = , ω2 = , ω3 = 1, 3 3 ist eine rationale Bézier–Kurve vom Grad 3, die einen Halbkreis darstellt. 3 B–Splines 45 3. B–Splines Mit Bézier–Kurven kann man einfache gekrümmte Kurven sehr gut modellieren. Es gibt jedoch eine Reihe von Tatsachen, die dazu geführt haben, dass sich in CAD–Systemen andere mathematische Beschreibungen für Kurven und Flächen etabliert haben. Ein wesentlicher Nachteil besteht darin, dass man Bézier–Kurven nicht lokal kontrollieren kann. Eine Änderung eines einzigen Kontrollpunktes verändert den Verlauf der gesamten Kurve. Zur Modellierung von komplexen Kurven muss man Bernsteinpolynome von höherem Grad verwenden. Bernsteinpolynome von höherem Grad haben jedoch gravierende Nachteile. Der Verlauf der Bézier–Kurve unterscheidet sich um so mehr vom Verlauf des Kontrollpolygons je höher der Grad der Bernsteinpolynome ist. Bernsteinpolynome von höherem Grad sind anfälliger bezüglich Rundungsfehler. Mathematisch formuliert bezeichnet man das als numerische Instabilität. Ein weiterer Nachteil ist, dass Bernsteinpolynome bei der Interpolation zum Überschwingen neigen. Den Aspekt der Interpolation wollen wir hier jedoch nicht betrachten. In modernen CAD–Systemen verwendet man deshalb sogenannte B–Splines zur mathematischen Beschreibung von Freiformkurven und Freiformflächen. Der Begriff Spline stammt ursprünglich aus dem Schiffsbau. Eine Straklatten (englisch spline) die an einzelnen Punkten durch Nägel fixiert wird ist bestrebt die durch Biegung erzeugte innere Spannung zu minimieren. In der Mathematik verwendet man den Begriff Spline immer dann, wenn einfache Funktionen unter Einhaltung bestimmter Bedingungen zusammengesetzt werden. In unserem Fall sind die einfachen Funktionen Polynome. In der Regel beschränkt man sich in CAD–Systeme auf Polynome mit niedrigen Grad d ≤ 5. 46 III NURBS 3.1. Lineare Splines Die meisten grundlegenden Eigenschaften von Splines kann man sich bereits an linearen Splines, d.h. Splines, die aus Polynomen vom Grad d = 1 zusammengesetzt sind klar machen. Bei einer linearen Spline–Funktion handelt es sich lediglich um einen Polygonzug. Definition III.4 (Lineare Spline–Funktion) Den Polygonzug, der die n Punkte mit den Koordinaten (u0 , f0 ), (u1 , f1 ), (u2 , f2 ), . . . , (un−1 , fn−1 ) verbindet, bezeichnet man als lineare Spline–Funktion. Dabei müssen die u–Werte aufsteigend sortiert sein u0 < u1 < u2 < . . . < un−1 . Die Funktion ist nur im Bereich zwischen u0 und un−1 definiert. Wir wollen uns zunächst mit der Frage beschäftigen, wie man einen Polygonzug als Funktion beschreiben kann. Beispiel III.8 (Linearer Spline) (1, 4), (3, 1), (5, 1), (8, 3), (10, 2) 3 B–Splines 47 5 Y 4 3 2 1 -1 1 2 3 4 5 6 7 8 9 10 11 X -1 Abbildung III.1.: Linearer Spline. Abbildung III.8 zeigt einen Polygonzug. Man kann diesen Polygonzug als abschnittsweise Funktion darstellen. Beispiel III.9 (Linearer Spline als abschnittsweise Funktion) 1−4 (x − 1) 4+ 3 − 1 1−1 (x − 3) 1+ 5−3 f (x) = 3−1 1+ (x − 5) 8−5 3 + 2 − 3 (x − 8) 10 − 8 für x ∈ [1; 3] für x ∈ [3; 5] für x ∈ [5; 8] für x ∈ [8; 10] Die Grundidee bei Splines besteht darin, die Funktion mit Hilfe geeigneter Basisfunktionen darzustellen. 48 III NURBS Beispiel III.10 (Basis eines linearen Spline) 2 Y 1 -1 N10(x) 1 N11(x) 2 3 N12(x) 4 5 N13(x) 6 7 8 N14(x) 9 10 11 X -1 Abbildung III.2.: Basis eines linearen Spline. f (x) = 4 · N01 (x) + 1 · N11 (x) + 1 · N21 (x) + 3 · N31 (x) + 2 · N41 (x). Die einzelnen Basisfunktionen hängen nun nicht mehr von den Funktionswerten, sondern nur noch von den u-Werten ab. Für diese Basisfunktionen hat sich die Bezeichnung B–Spline etabliert. Bereits 1949 verwendete Schoenberg diesen Begriff, wobei die Abkürzung „B“ in B–Spline für „basis“ steht. B–Spline Notation Für B–Splines verwendet man üblicherweise eine Schreibweise mit zwei Indices d . . . Grad der Polynome, Nid (x), i . . . Laufindex, Der untere Index i ist ein Laufindex, der alle n B–Splines von 0 bis n − 1 durchläuft. Der obere Index d spezifiziert den Grad der Polynome. 3 B–Splines 49 Um die Unsymmetrie der ersten und der letzten B–Splines zu beseitigen, fügt man künstlich noch zwei u–Werte hinzu. Beispiel III.11 (Basisfunktionen am Rand) 2 Y 1 -1 N10(x) 1 N11(x) 2 3 N12(x) 4 5 N13(x) 6 7 8 N14(x) 9 10 11 X -1 Abbildung III.3.: Erweiterung der Basisfunktionen am Rand. Die beiden zusätzlichen u–Werte am Rand führen in der Praxis oft zur Verwirrung. Im Prinzip können die beiden Werte unter den Einschränkungen u−1 ≤ u0 und un−1 ≤ un beliebig gewählt werden. Da der Spline ohnehin nur zwischen u0 und un−1 betrachtet wird, haben die Werte von u0 und un keinen Einfluss auf die Spline–Funktion. Eine in vielen CAD–Systemen und CAD–Datenformaten gängige Wahl ist u−1 = u0 und un = un−1 . 50 III NURBS Definition III.5 (Lineare B–Splines) Zu n + 2 Knotenwerten u−1 ≤ u0 ≤ u1 ≤ u2 ≤ . . . ≤ un−1 ≤ un , von denen je maximal zwei aufeinanderfolgende Werte gleich sind, definiert man n lineare B–Splines vom Grad d = 1 durch 0 für x < ui−1 x − ui−1 für ui−1 ≤ x < ui ui − ui−1 i = 0, 1, 2, . . . , n − 1. Ni1 (x) = u − x i+1 für ui ≤ x < ui+1 ui+1 − ui 0 für x > ui+1 Bei der obigen Definition sind gleiche Knoten explizit zugelassen. Sind zwei aufeinanderfolgende u–Werte gleich so spricht man von einem doppelten Knoten oder einem Knoten der Vielfachheit 2. Bei Knoten mit Vielfachheit 2 ist allerdings zu beachten, dass in der Formel bei gleichen Knotenwerten durch Null geteilt wird. Mathematisch kann man diese Vorgehensweise dadurch rechtfertigen, dass in diesem Fall das entsprechende Definitionsintervall leer ist. Bei der Implementierung in einem CAD–System sind solche Feinheiten zu berücksichtigen. Beispiel III.12 (Lineare B–Splines) Die vier Knotenwerte u−1 = 0, u0 = 0, u1 = 1, u2 = 1, 3 B–Splines 51 erzeugen zwei Basisfunktionen 0 x−0 0−0 N01 (x) = 1−x 1−0 0 für x<0 für 0≤x<0 für 0≤x<1 für x>1 für x<0 für 0≤x<1 für 1≤x<1 für x>1 und 0 x−0 1−0 N11 (x) = 1 −x 0−0 0 Für Werte zwischen 0 und 1 stimmen diese Basisfunktionen mit den Bernsteinpolynomen vom Grad 1 überein N01 (x) = 1 − x = B01 (x), und N11 (x) = x = B11 (x). Die Bernsteinpolynome sind also als Spezialfall in den B–Splines enthalten. 52 III NURBS Lineare Spline–Funktion Eine lineare Spline–Funktion durch die n Punkte mit den Koordinaten (u0 , f0 ), (u1 , f1 ), (u2 , f2 ), . . . , (un−1 , fn−1 ) kann man als Summe von n linearen B–Splines f (x) = n−1 X i=0 fi Ni1 (x), x ∈ [u0 ; un−1 ], zu den n + 2 Knotenwerten u−1 ≤ u0 ≤ u1 ≤ u2 ≤ . . . ≤ un−1 ≤ un , darstellen. Die Knotenwerte am Rand können unter den Einschränkungen u−1 ≤ u0 und un−1 ≤ un beliebig gewählt werden. Die Spline–Funktion betrachten wir nur für x–Werte zwischen u0 und un−1 . 3.2. Definition der B–Splines B–Splines vom Grad d vereinigen die Grundidee der Bernsteinpolynome und der linearen B–Splines. Das Ziel ist es, Basisfunktionen zu definieren, mit denen Polynome vom Grad d stückweise zusammengesetzt werden. Mit Hilfe von B–Splines gelingt es Polynome so zusammenzusetzen, dass die Glattheit an den Übergängen zwischen den einzelnen Polynomstücken kontrolliert werden kann. 3 B–Splines 53 Die Grundlagen der B–Splines legte Schoenberg bereits 1949. Er definierte B–Splines vom Grad d dadurch, dass er zwei benachbarte B–Splines vom Grad d − 1 faltete. Definition III.6 (B–Splines) Ein B–Spline vom Grad d entsteht dadurch, dass man zwei benachbarte B–Splines vom Grad d − 1 mit einander faltet. Ausgehend von den linearen B–Splines kann man so rekursiv B–Splines vom Grad d = 2, d = 3, . . ., erzeugen. Bei fester Knotenanzahl nimmt die Anzahl der B–Splines mit wachsendem Grad d jeweils um 1 ab, d.h. es besteht folgende Konsistenzbedingung Anzahl der Knoten = Anzahl der Basisfunktionen + Grad + 1. Beispiel III.13 (B–Spline Faltung) Die mathematischen Einzelheiten der Faltung können wir uns an dieser Stelle sparen, da die Berechnung der B–Splines mit Hilfe von Rekursionsformeln einfacher durchgeführt werden kann. 3.3. Rekursionsformel der B–Splines De Boor, Cox und Mansfield haben erkannt, dass sich die B–Splines durch Rekursionsformeln berechnen lassen. 54 III NURBS u −1 N10(t) N11(t) N12(t) u u u u u1 u2 u0 u1 0 1 2 N0(t) u−2 u−1 2 3 2 N1(t) u0 3 N0(t) u−3 u−2 u−1 Abbildung III.4.: B–Splines entstehen durch Faltung. Definition III.7 (Rekursionsformel der B–Splines) Ein B–Spline vom Grad d entsteht dadurch, dass man zwei benachbarte B–Splines vom Grad d − 1 mit Hilfe der Formel Nid (x) = x − ui−d d−1 ui+1 − x d−1 Ni (x) + Ni+1 (x) ui − ui−d ui+1 − ui−d+1 linear interpoliert. Die Formel gilt für i = 0, 1, 2, . . . , n − 1, dabei verwenden wir für die Knoten die Nummerierung u−d ≤ u−d+1 ≤ . . . ≤ u−1 ≤ u0 ≤ u1 ≤ u2 ≤ . . . ≤ un−1 ≤ un . Der i–te B–Spline Nid (x) ist außerhalb des Intervalls [ui−d , ui+1 ] Null. 3 B–Splines 55 In der Literatur werden unterschiedliche Notationen für die Rekursionsformel verwendet. Bei der Implementierung in einer speziellen Programmiersprache (FORTRAN, C, MATLAB, . . . ) kann es günstig sein, die Nummerierung der Knoten und der Basisfunktionen entsprechend anzupassen. Wir haben in III.5 die linearen B–Splines vom Grad d = 1 bereits definiert und können unsere Rekursion damit starten. In der Literatur verwendet man jedoch in der Regel die B–Splines vom Grad 0 als Rekursionsanfang. Definition III.8 (Konstante B–Splines) Zu n Knotenwerten u0 < u1 < u2 < . . . ≤ un−1 , definiert man n konstante 0 für 1 für Ni0 (x) = 0 für B–Splines vom Grad d = 0 durch x < ui ui ≤ x < ui+1 i = 0, 1, 2, . . . , n − 1. x > ui+1 Beispiel III.14 (B–Spline Rekursion) Die rekursive Berechnung der B–Splines vom Grad d = 1 zu den Knoten u−1 = 0, u0 = 1, u1 = 2, u2 = 3, 56 III NURBS N00(t) u0 N01(t) u1 u2 N1(t) N1(t) u0 u1 0 u−1 N02(t) u3 1 u2 Abbildung III.5.: B–Splines entstehen durch Rekursion. ergibt N01 (x) = x−0 0 2−x 0 N0 (x) + N (x) 1−0 2−1 1 N11 (x) = x−1 0 3−x 0 N1 (x) + N (x). 2−1 3−2 2 und Knotenvielfachheit Sind m aufeinanderfolgende u–Werte gleich so spricht man von einem Knoten der Vielfachheit m. Bei einem B–Spline vom Grad d lassen wir nur Knoten mit einer maximalen Vielfachheit d + 1 zu Knotenvielfachheit ≤ Grad + 1. 3 B–Splines 57 Manche CAD–Systeme erlauben für innere Knoten höchstens die Vielfachheit d. Uniforme Knoten Von uniformen Knoten spricht man dann, wenn alle Knotenabstände gleich groß sind, d.h. u−d+1 − u−d = . . . = u0 − u−1 = u1 − u0 = . . . = un − un−1 . 3.4. Eigenschaften der B–Splines B–Splines besitzen ähnliche Eigenschaften wie die Bernsteinpolynome. B–Splines und Bernsteinpolynome Bereits in Beispiel III.12 haben wir gesehen, dass die Bernsteinpolynome vom Grad 1 spezielle lineare B–Splines sind. Dieser Sachverhalt bleibt auch für höheren Grad d gültig. 58 III NURBS B–Splines und Bernsteinpolynome Die B–Splines vom Grad d zu dem speziellen Knotenvektor der genau d + 1 mal den Knoten 0 und d + 1 mal den Knoten 1 enthält, 0, 0, . . . , 0, 0, 1, 1, . . . , 1, 1, {z }| {z } | (d+1)–fach (d+1)–fach sind die Bernsteinpolynome vom Grad d. Differenzierbarkeit Zwischen zwei Knoten sind B–Splines Polynome vom Grad d und somit beliebig oft stetig differenzierbar. An den Knoten werden jedoch unterschiedliche Polynome zusammengesetzt. Dadurch können Unstetigkeiten der Funktionswerte (Sprünge), Unstetigkeiten der ersten Ableitungen (Knicke) oder Unstetigkeiten in höheren Ableitungen (Krümmung, Torsion, . . . ) entstehen. Bei B–Splines hängt die Differenzierbarkeit an einem Knoten von der Knotenvielfachheit ab. B–Splines vom Grad d sind an einem einfachen Knoten mindestens d − 1 mal stetig differnzierbar. Mehrfache Knoten reduzieren jedoch die Glattheit der B–Splines. Glattheit der B–Splines Hat ein Knoten die Vielfachheit m, so sind die B–Splines vom Grad d an diesem Knoten d − m mal stetig differenzierbar. 3 B–Splines 59 Ein B–Spline vom Grad 3, bei dem alle inneren Knoten einfach sind, ist also zweimal stetig differnzierbar. Beispiel III.15 (Glattheit der B–Splines) N30(t) N34(t) N31(t) N3(t) N33(t) 2 u−3 u−2u−1u0 u1 N35(t) u2u3u4 N36(t) u5 N37(t) u6 u7 u8 Abbildung III.6.: Glattheit der B–Splines. Bei den Knotenwerten −1, 0, 0, 0, 1, 2, 2, 2, 3, 4, 5, 6. kommt der Knotenwert u2 = u3 = u4 = 2 drei mal vor. Durch den Grad d = 3 sind alle B–Splines an der Stelle zwar noch stetig, aber die B–Splines N33 (t), N43 (t) und N53 (t) sind an der Stelle t = 2 einen Knick, sind also nicht differenzierbar. Knoten mit Vielfachheit d 60 III NURBS Knotenvielfachheit d Hat der Knoten uk die Vielfachheit d, d.h. gilt uk = uk+1 = . . . = uk+d−1 , dann haben alle anderen B–Splines außer Nkd (x) an der Stelle uk den Wert 0. Nkd (x) hat an dem d–fachen Knoten den Wert 1, d.h. Nkd (uk ) = 1. Zerlegung der 1 Genau wie die Bernsteinpolynome bilden auch die B–Splines eine Zerlegung der 1. B–Splines bilden Zerlegung der 1 Die Summe aller B–Splines vom Grad d bilden im Intervall [u0 ; un−d ] eine Zerlegung der 1, d.h. d d (x) + Nn−1 (x) = 1, N0d (x) + N1d (x) + N2d (x) + . . . + Nn−2 für alle x ∈ [u0 ; un−d ]. Die Zerlegung der 1 gilt aber nicht auf dem gesamten Knotenvektor von u−d bis un sondern nur auf dem Teilbereich zwischen u0 und un−d . 4 B–Spline–Kurven 61 4. B–Spline–Kurven Genau wie wir mit Hilfe von Bernsteinpolynomen Bézier–Kurven erzeugt haben, werden wir mit Hilfe von B–Splines B–Spline–Kurven definieren. 4.1. Definition der B–Spline–Kurven Definition III.9 (B–Spline–Kurve) Eine B–Spline–Kurve vom Grad d mit n Kontrollpunkten a0 , a1 , a2 , . . . , an−1 , besitzt die Parameterdarstellung d a(t) = N0d (t)a0 + N1d (t)a1 + N2d (t)a2 + . . . + Nn−1 (t)an−1 . Dabei werden die n B–Splines durch den Knotenvektor u−d ≤ u−d+1 ≤ . . . ≤ u−1 ≤ u0 ≤ u1 ≤ u2 ≤ . . . ≤ un−1 ≤ un , definiert und der Kurvenparameter t durchläuft das Intervall [u0 ; un−d ]. Zur Definition einer B–Spline–Kurve müssen wir zunächst den Grad d festlegen. Oft arbeitet man in CAD–Systemen mit den Graden d = 1, d = 2, d = 3 und d = 5. Der Knotenvektor legt dann die B–Splines und somit die Anzahl der Kurvensegmente und die Glattheit, mit der die Kurvensegmente zusammen- 62 III NURBS stoßen fest. Sinnvollerweise benötigt man bei einer Spline–Kurve vom Grad d mindestens 2d + 2 Knotenwerte. Die Kontrollpunkte bestimmen den Verlauf der B–Spline–Kurve. Oft werden die Kontrollpunkte von B–Spline–Kurven auch als de Boor Punkte bezeichnet. Dass der Kurvenparameter nicht alle Werte des Knotenvektors durchläuft, sondern nur Werte im Intervall [u0 ; un−d ] verwendet werden, hängt mit der Zerlegung der 1 zusammen. Diese Eigenschaft ist nur auf dem Intervall [u0 ; un−d ] erfüllt. 4 B–Spline–Kurven 63 Beispiel III.16 (B–Spline–Kurve) a1 a2 a5 c(1) a6 c(3) a7 c(2) a4 a c(0) a 0 3 N30(t) N34(t) N31(t) N3(t) N33(t) 2 u−3 u−2u−1u0 u1 N35(t) u2u3u4 N36(t) u5 N37(t) u6 u7 u8 Abbildung III.7.: B–Spline Kurve. Die abgebildete B–Spline–Kurve hat den Grad d = 3 und die Knoten −1, 0, 0, 0, 1, 2, 2, 2, 3, 4, 5, 6. Der Parameterbereich der Kurve beschränkt sich auf das Intervall [0, 3]. Auf Grund des dreifachen Knotens am Anfang startet die Kurve für t = 0 direkt im Kontrollpunkt a0 . Der Endpunkt der Kurve beim Parameterwert 64 III NURBS t = 3 wird von den Kontrollpunkten a5 , a6 und a7 beeinflusst. Durch den dreifachen Knoten an der Stelle t = 2 liegt der Kontrollpunkt a4 auf der Kurve, allerdings entsteht dadurch an dieser Stelle auch ein Knick. 4.2. Eigenschaften der B–Spline–Kurven B–Spline–Kurven müssen nicht unbedingt im ersten Kontrollpunkt starten und im letzten Kontrollpunkt enden. Diese Eigenschaft verwendet man insbesondere bei geschlossenen B–Spline–Kurven, wie etwa Kreisen. Allerdings führt das in der Praxis oft zu Verwirrungen. Das Problem kann man dadurch umgehen, dass man einen Knotenvektor verwendet, bei dem der erste und der letzte Knoten eine entsprechende Vielfachheit besitzen. Start– und Endpunkt der B–Spline–Kurve Start– und Endpunkt der B–Spline–Kurve Eine B–Spline–Kurve startet für t = u0 im ersten Kontrollpunkt a0 , falls der Knoten u0 mindestens die Vielfachheit d hat. Eine B–Spline–Kurve endet für t = un−d im letzten Kontrollpunkt an−1 , falls der Knoten un−d mindestens die Vielfachheit d hat. Lokale Kontrolle Der i–te B–Spline Nid (x) ist außerhalb des Intervalls [ui−d , ui+1 ] Null. Dadurch wirkt sich eine Veränderung des i–ten Kontrollpunktes ai nur auf Kurvenpunkte aus, deren Parameter innerhalb des Intervalls [ui−d , ui+1 ] liegen. 4 B–Spline–Kurven 65 Lokale Kontrolle der B–Spline–Kurve Die Veränderung des Kontrollpunktes ai beeinflusst die B–Spline–Kurve nur für Parameterwerte im Intervall [ui−d , ui+1 ]. Außerhalb dieses Intervalls bleibt die Kurve unverändert. 66 III NURBS Beispiel III.17 (B–Spline–Kurve) a1 a2 a5 c(1) a6 c(3) a0c(0) a 7 c(2) a4 a c(0) a 0 3 N30(t) N34(t) N31(t) N3(t) N33(t) 2 u−3 u−2u−1u0 u1 N35(t) u2u3u4 N36(t) u5 N37(t) u6 u7 u8 Abbildung III.8.: Lokale Kontrolle der B–Spline Kurve. Die Veränderung des Kontrollpunktes a0 wirk sich nur auf den Teil der Kurve aus, der zu Parameterwerten zwischen 0 und 1 gehört. Der Rest der Kurve bleibt unverändert. 4 B–Spline–Kurven 67 Konvexe Hülle Konvexe Hülle der B–Spline–Kurve Eine B–Spline–Kurve verläuft vollkommen innerhalb der konvexen Hülle der Kontrollpunkte. Auf Grund der lokalen Kontrolle kann man den Verlauf einer B–Spline– Kurve anhand der Kontrollpunkte noch wesentlich genauer spezifizieren. Details dazu findet man in der Literatur. 4.3. Der Knoten–Einfügen–Algorithmus Bézier–Kurven konnten wir mit Hilfe des De Casteljau–Algorithmus auswerten und unterteilen. Die gleichen Aufgaben erfüllt der Knoten–Einfügen– Algorithmus für B–Spline–Kurven. Das Ziel dieses Algorithmus ist es, einen zusätzlichen Knoten u in den Knotenvektor einzufügen, und dabei die Kontrollpunkte so zu verändern, dass der ursprüngliche Knotenvektor mit den ursprünglichen Kontrollpunkten und der neue Knotenvektor mit den neuen Kontrollpunkten exakt die selbe Kurve darstellen. Mit anderen Worten, die Darstellung der Kurve ändert sich, die Kurve selbst bleibt jedoch unverändert. Falls alle Knoten die Vielfachheit d oder d + 1 haben, entspricht der Knoten–Einfügen–Algorithmus dem De Casteljau–Algorithmus. 68 III NURBS Knoten–Einfügen–Algorithmus Der Knoten u soll in eine B–Spline–Kurve vom Grad d mit n Kontrollpunkten a0 , a1 , a2 , . . . , an−1 und dem Knotenvektor u−d ≤ u−d+1 ≤ . . . ≤ u−1 ≤ u0 ≤ u1 ≤ u2 ≤ . . . ≤ un−1 ≤ un eingefügt werden. (1) Man bestimmt alle Knotenintervalle mit d+1 Knoten, die den neuen Knoten u enthalten ui < u < ui+d . (2) Für jeden in Schritt (1) bestimmten Index i bestimmt man ein Gewicht u − ui ωi = . ui+d − ui (3) Für jeden in Schritt (1) bestimmten Index i wird der Kontrollpunkt ai+d = (1 − ωi )ai+d−1 + ωi ai+d neu bestimmt. (4) Man fügt u in den Knotenvektor ein. Durch den zusätzlichen Knoten erhalten wir eine zusätzliche Basisfunktion. Somit erhalten wir beim Einfügen eines Knotens auch einen zusätzlichen Kontrollpunkt. Bei allen Kontrollpunkten, die hinter dem neu eingefügten Kontrollpunkt liegen, erhöht sich dadurch der Index um 1. 4 B–Spline–Kurven 69 Beispiel III.18 (Knoten einfügen) a a 1 a 2 2 a5 a 6 a3 a 6 a7 a 1 a8a7 a5 a4 a0a0 a4a3 N30(t) N34(t) N31(t) N3(t) N33(t) 2 u−3 u−2u−1u0 u1 N30(t) N35(t) u2u3u4 u−2u−1u0 u1 u5 N35(t) 3 N31(t)N2(t) N3(t) N3(t) 3 4 u−3 N36(t) u2 N36(t) u3u4u5 N37(t) u6 N37(t) u6 u7 u8 u8 u9 N38(t) u7 Abbildung III.9.: Knoten einfügen bei einer B–Spline Kurve. 70 III NURBS In der Mitte zwischen u0 und u1 soll ein neuer Knoten u eingefügt werden. (1) Es gibt drei Knotenintervalle mit d + 1 Knoten, die den neuen Knoten u enthalten i = −2 : i = −1 : i=0 : u−2 < u < u1 , u−1 < u < u2 , u0 < u < u3 . (2) Die Gewichte sind u − u−2 = u1 − u−2 u − u−1 = = u2 − u−1 u − u0 = = u3 − u0 i = −2 : ω−2 = 1 , 2 i = −1 : ω−1 1 , 4 i=0 ω0 : 1 . 4 (3) Die Kontrollpunkt a1 , a2 und a3 müssen neu berechnet werden i = −2 : i = −1 : i=0 : 1 a1 = a0 + 2 3 a2 = a1 + 4 3 a3 = a2 + 4 1 a1 , 2 1 a2 , 4 1 a3 . 4 (4) Man fügt u in den Knotenvektor ein. Neben dem Knoten–Einfügen–Algorithmus gibt es noch verschiedene Varianten von Oslo–Algorithmen, mit deren Hilfe simultanes Knoteneinfügen performant durchgeführt werden kann. Mit Hilfe des Knoten–Einfügen–Algorithmus kann man sehr einfach die Kurve an einem beliebigen Parameterwert auserten. 4 B–Spline–Kurven 71 De–Boor–Algorithmus Der de–Boor–Algorithmus berechnet den Wert der B–Spline–Kurve an der Stelle t dadurch, dass der Knoten t so oft eingefügt wird, bis er die Vielfachheit d besitzt. Der Wert der Kurve entspricht dann dem entsprechenden Kontrollpunkt. Man kann den Knoten–Einfügen–Algorithmus auch dazu verwenden, eine B–Spline–Kurve in Segmente aus Bézier–Kurven zu zerlegen. Dazu werden Knoten so lange eingefügt, bis alle Knoten die Vielfachheit d bzw. d + 1 haben. 72 III NURBS 4.4. Rationale B–Spline–Kurven Definition III.10 (Rationale B–Spline–Kurve) Eine rationale B– Spline–Kurve vom Grad d mit n Kontrollpunkten a0 , a1 , a2 , . . . , an−1 , und n Gewichten ω0 , ω1 , ω2 , . . . , ωn , besitzt für t ∈ [0, 1] die Parameterdarstellung n−1 X a(t) = ωi Nid (t)ai i=0 n−1 X . ωi Nid (t) i=0 Dabei werden die n B–Splines durch den Knotenvektor u−d ≤ u−d+1 ≤ . . . ≤ u−1 ≤ u0 ≤ u1 ≤ u2 ≤ . . . ≤ un−1 ≤ un , definiert und der Kurvenparameter t durchläuft das Intervall [u0 ; un−d ]. 5 Flächen 73 5. Flächen 5.1. Tensorproduktflächen In Abschnitt 3.2 haben wir Regelflächen als Verbindungsflächen zweier Kurven c0 (u) und c1 (u) durch Geradenstücke definiert. Die beiden Kurven können dabei beliebig gewählt werden, allerdings müssen sie über dem selben Parameterintervall I1 parametrisiert sein. Mit Hilfe der Bernsteinpolynome vom Grad 1 lassen sich solche Flächen durch S(u, v) = B01 (v) · c0 (u) + B11 (v) · c1 (u) 1 X = Bj1 (v) · cj (u), u ∈ I1 , v ∈ [0; 1], j=0 darstellen. Wenn wir für die beiden Kurven nun Bézier–Kurven vom Grad d verwenden, c0 (u) = d X Bid (u)bi0 , c1 (u) = i=0 d X Bid (u)bi1 , i=0 u ∈ [0, ; ], dann wird die Fläche komplett durch die Kontrollpunkte und die Bernsteinpolynome beschrieben S(u, v) = 1 X j=0 Bj1 (v) · d X i=0 Bid (u)bij , u, v ∈ [0; 1]. Bisher haben wir für den Parameter v nur lineare Veränderungen von 0 nach 1 betrachtet. Das gesamte Konzept lässt sich auf beliebige Kurven im Parameter v und sogar auf beliebige Basisfunktionen erweitern. 74 III NURBS Definition III.11 (Tensorproduktfläche) Eine Tensorproduktfläche S(u, v) entsteht aus einer Rechteckstruktur von n · m Kontrollpunkten b0,0 b1,0 .. . b0,1 b1,1 .. . ... ... .. . b0,m−1 b1,m−1 .. . bn−1,0 bn−1,1 . . . bn−1,m−1 n Basisfunktionen in u B0 (u), B1 (u), . . . Bn−1 (u) und m Basisfunktionen in v B0 (v), B1 (v), . . . Bm−1 (v). Jeder Kontrollpunkt bij wird mit den entsprechenden Basisfunktionen Bi (u) und Bj (v) multipliziert und summiert S(u, v) = n−1 m−1 X X Bi (u)Bj (v)bij . i=0 j=0 Die geometrische Form einer Tensorproduktfläche wird im wesentlichen durch die Kontrollpunkte bestimmt. Die Eigenschaften der Tensorproduktfläche hängen von den gewählten Basisfunktionen ab. Wir werden als Basisfunktionen Bernsteinpolynome und B–Splines betrachten. 5 Flächen 75 Beispiel III.19 (Bilineare Bézierfläche) Das einfachste Beispiel einer Tensorproduktfläche ist eine Fläche, bei der zwei Geradenstücke zu einer Fläche verbunden werden. Die Bézier–Kurve c0 (u) = B01 (u)b00 + B11 (u)b10 vom Grad 1 verbindet die beiden Kontrollpunkte b00 und b10 durch ein Geradenstück, analog verbindet die zweite Bézier–Kurve c1 (u) = B01 (u)b01 + B11 (u)b11 die beiden Kontrollpunkte b01 und b11 . Beide Kurven sind über dem Parameterintervall u ∈ [0; 1] definiert. Die bilineare Fläche mit den Bézier–Kontrollpunkten b00 , b01 , b10 und b11 besitzt die Parameterdarstellung B01 (u)B01 (v)·b00 +B01 (u)B11 (v)·b01 +B11 (u)B01 (v)·b10 +B11 (u)B11 (v)·b11 . Dabei durchlaufen die Parameter den Definitionsbereich u ∈ [0; 1], v ∈ [0; 1]. 76 III NURBS 5.2. Bézier–Flächen Definition III.12 (Bézier–Fläche) Eine Bézier–Fläche ist eine Tensorproduktfläche, bei der die Basisfunktionen Bernsteinpolynome sind S(u, v) = d1 X d2 X i=0 j=0 Bid1 (u)Bjd2 (v)bij , u, v ∈ [0; 1]. Der Grad in u und der Grad in v kann dabei unterschiedlich sein. Eine Bézier–Fläche mit Grad d1 in u und Grad d2 in v besitzt ein Netz mit (d1 + 1) · (d2 + 1) Kontrollpunkten. 5 Flächen 77 Beispiel III.20 (Bézierfläche vom Grad d1 = 2, d2 = 1) Die abgebildete Bézierfläche hat den Grad d1 = 2 in u und den Grad d2 = 1 in v. Die Kontrollpunkte haben die Koordinaten 0 1 2 b00 = 0 , b10 = 0 , b20 = 0 , 1 2 1 b01 0 1 2 1 , b11 = 1 , b21 = 1 . = 1 2 1 78 III NURBS Beispiel III.21 (Bézierfläche vom Grad d1 = 2, d2 = 2) Die abgebildete Bézierfläche hat den Grad d1 = 2 in u und den Grad d2 = 2 in v. Die Kontrollpunkte haben die Koordinaten 0 1 2 b00 = 0 , b10 = 0 , b20 = 0 , 1 2 1 b01 0 1 2 1 , b11 = 1 , b21 = 1 , = 1 2 1 b02 0 1 2 = 2 , b12 = 2 , b22 = 2 . 1 2 1 5 Flächen 79 Beispiel III.22 (Bézierfläche vom Grad d1 = 3, d2 = 3) Die abgebildete Bézierfläche hat den Grad d1 = 3 in u und den Grad d2 = 3 in v. Die Kontrollpunkte haben die Koordinaten 0 1 2 3 0 , b10 = 0 , b20 = 0 , b30 = 0 , b00 = 1 2 2 1 b01 0 1 2 3 1 , b11 = 1 , b21 = 1 , b31 = 1 , = 2 3 3 2 b02 0 1 2 3 2 , 2 , b12 = 2 , b22 = 2 , b32 = = 2 3 3 2 b03 0 1 2 3 3 , b13 = 3 , b23 = 3 , b33 = 3 . = 1 2 2 1 80 III NURBS 5.3. B–Spline–Flächen Definition III.13 (B–Spline–Fläche) Eine B–Spline–Fläche ist eine Tensorproduktfläche, bei der die Basisfunktionen B–Splines sind S(u, v) = n−1 m−1 X X Nid1 (u)Njd2 (v)aij . i=0 j=0 Die B–Splines in u und in v können unterschiedlichen Grad d1 bzw. d2 haben und durch unterschiedliche Knotenwerte für u und v definiert sein. Eine B–Spline–Fläche mit n Basisfunktionen in u und m Basisfunktionen in v besitzt ein Netz mit n · m Kontrollpunkten. Die wesentlichen Vorteile der B–Spline–Flächen im Vergleich zu Bézier– Flächen liegen in der lokalen Kontrolle und der Möglichkeit die Glattheit der Fläche durch die Vielfachheit der Knoten zu kontrollieren. 5 Flächen 81 Beispiel III.23 (B–Spline–Fläche) Die abgebildete B–Spline–Fläche hat den Grad d1 = 2 in u und den Grad d2 = 3 in v. Der Knotenvektor in u 0, 0, 0, 1, 1, 2, 2, 2, erzeugt 5 Basisfunktionen. Durch den doppelten Knoten an der Stelle u = 1 kann nur noch die Stetigkeit garantiert werden. Bei der Fläche ist entlang der Kurve mit u = 2 ein Knick zu erwarten. Der Knotenvektor in v 0, 0, 0, 0, 1, 1, 1, 1, erzeugt 4 Basisfunktionen. 82 III NURBS 5.4. NURBS Die Abkürzung NURBS steht für „Non Uniform Rational B–Spline Surface“. Definition III.14 (NURBS) Eine B–Spline–Fläche, die zusätzlich zu den n·m Kontrollpunkten aij noch n·m Gewichte wij besitzt, bezeichnet man als NURBS. Die Parameterdarstellung lautet n−1 m−1 X X S(u, v) = Nid1 (u)Njd2 (v)wij aij i=0 j=0 n−1 m−1 X X . Nid1 (u)Njd2 (v)wij i=0 j=0 Mit NURBS kann man Flächen, die aus Kreisen entstehen, exakt darstellen. Insbesondere zählen dazu Kreiszylinder, Kugeln und Rotationsflächen. 6 Übungen 83 6. Übungen Uebung III.1 (Maximum der Bernsteinpolynome) Zeigen Sie, dass das i–te Bernsteinpolynom vom Grad d d i d Bi (x) = x (1 − x)d−i , i ein Maximum an der Stelle x = i d hat. Uebung III.2 (Rekursionsformel der Bernsteinpolynome) Berechnen Sie die drei Bernsteinpolynom vom Grad 3 aus den beiden Bernsteinpolynomen vom Grad 2 mit Hilfe der Rekursionsformel. Uebung III.3 (Umrechnung in Bernsteinpolynome) Stellen Sie das Polynom p(x) = −1 + x + x2 als Summe von Bernsteinpolynomen dar. Uebung III.4 (Bézier–Kurve vom Grad d = 3) Eine Bezier–Kurve vom Grad 3 hat die Kontrollpunkte 0 3 6 9 b0 = , b1 = , b2 = , b3 = . 0 8 8 0 a) Skizzieren Sie das Kontrollpolygon. b) Bestimmen Sie den Wert der Kurve für den Parameter t = Hilfe des de Casteljau–Algorithmus zeichnerisch. 1 2 mit 84 III NURBS c) Bestimmen Sie den Tangentenvektor im Anfangs– und im Endpunkt der Kurve. d) Skizzieren Sie den Verlauf der Kurve. e) Welche Bézier–Kontrollpunkte haben die beiden Bézier–Kurven, die entstehen, wenn man die Kurve am Parameterwert t = 21 unterteilt? Uebung III.5 (Bézier–Kurve vom Grad d = 3) Eine Bezier–Kurve vom Grad 3 hat die Kontrollpunkte 4 0 7 3 b0 = , b1 = , b2 = , b3 = . 0 7 7 0 a) Skizzieren Sie das Kontrollpolygon. b) Bestimmen Sie den Wert der Kurve für den Parameter t = Hilfe des de Casteljau–Algorithmus zeichnerisch. 1 2 mit c) Skizzieren Sie den Verlauf der Kurve. Uebung III.6 (B–Spline vom Grad d = 2) Die vier Knotenwerte 0, 1, 2, 3 erzeugen einen einzigen B–Spline vom Grad 2. Stellen Sie diesen B–Spline mit Hilfe der Rekursionsformel als abschnittsweise Funktion in der Form p1 (x) = a1 x2 + b1 x + c1 , für x ∈ [0; 1], 2 p2 (x) = a2 x2 + b2 x + c2 , für x ∈ [1; 2], N0 (x) = p3 (x) = a3 x2 + b3 x + c3 , für x ∈ [2; 3], dar und zeigen Sie dass der B–Spline einmal stetig differenzierbar ist, d.h. dass gilt p1 (1) = p2 (1), p2 (2) = p3 (2), p01 (1) = p02 (1), p02 (2) = p03 (2). 6 Übungen 85 Uebung III.7 (B–Spline vom Grad d = 3) Eine B–Spline–Kurve vom Grad d = 3 hat die Knotenwerte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. a) Skizzieren Sie den ungefähren Verlauf der Basisfunktionen. b) Wie viele Kontrollpunkte hat die B–Spline–Kurve? c) Für welche Parameterwerte ist die B–Spline–Kurve definiert? d) Was kann man über den Krümmungsverlauf der Kurve sagen? Uebung III.8 (B–Spline–Kurve vom Grad 2) Eine B–Spline–Kurve vom Grad 2 hat die Knotenwerte 0, 0, 0, 1, 2, 2, 2, und die Kontrollpunkte 0 3 6 9 a0 = , a1 = , a2 = , a3 = . 0 8 8 0 a) Skizzieren Sie das Kontrollpolygon. b) Bestimmen Sie den Wert der Kurve für den Parameter t = 1 mit Hilfe des de Boor–Algorithmus zeichnerisch. c) Skizzieren Sie den Verlauf der Kurve. Uebung III.9 (B–Spline–Kurve vom Grad 3) Eine B–Spline–Kurve vom Grad 3 hat die Knotenwerte 0, 0, 0, 0, 1, 2, 2, 2, 2 und die Kontrollpunkte 3 0 4 9 6 a0 = , a1 = , a2 = , a3 = , a4 = . 0 4 8 4 0 86 III NURBS a) Skizzieren Sie das Kontrollpolygon. b) Bestimmen Sie den Wert der Kurve für den Parameter t = 1 mit Hilfe des de Boor–Algorithmus zeichnerisch. c) Skizzieren Sie den Verlauf der Kurve. Uebung III.10 (Glattheit von NURBS) Ein NURBS vom Grad d1 = 3 und d2 = 3 hat die Knotenwerte in u 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2 und die Knotenwerte in v 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 a) Wie viele Kontrollpunkte hat die Fläche? b) Für welche Parameterwerte u und v ist die Fläche definiert? c) Was halten Sie von folgender Behauptung? „Am u–Wert 1 besitzt die Fläche einen dreifachen Knoten, deshalb hat die Fläche entlang der Flächenkurve zum Parameterwert u = 1 einen Knick.“