Graphische Datenverarbeitung Dr. Markus Heitz Hinweise • • • Email: [email protected] Informationsmaterial, Powerpoint-Präsentation: www.ba-stuttgart.de/~mheitz Vorlesungsskript von Prof. Dr. Rudolf Messer: http://www.bastuttgart.de/studienangebot/technik/it/ba-intern/vorlesung/gdv/vorles_GDV.htm Kurven- und Flächendarstellung • Wichtige Forderungen für die Darstellung von Kurven und Flächen sind: – Jede gewünschte Form muß mit genügender Genauigkeit darstellbar sein. – Die approximierenden (interpolierenden) Funktionen sollen in Parameterform einzugeben sein. Sie müssen leicht differenzierbar sein, damit die Berechnung von Tangenten und Krümmungen einfach ist. – Affine (lineare) Transformationen (Positionierung, Skalierung, ...) sollten leicht möglich sein. Splines • Funktionen, die stückweise aus Polynomen bestehen. Ein Spline hat die Ordnung m (Grad m-1), wenn er stückweise aus Polynomen der Ordnung m besteht. • Polynome: – einfach zu berechnen und leicht differenzierbar. – Leider neigen Polynome mit vielen Stützstellen zum Oszillieren. – deshalb verwendet man zweckmäßigerweise stückweise zusammengesetzte Funktionen mit stetigen und glatten Übergängen. • Beispiel: Ein Spline der Ordnung 3 (des Grades 2) besteht stückweise aus Parabeln: Kubische Splines • Besonders beliebt für Splines: Polynome 3. Grades (kubische Polynome), da Polynome niedrigeren Grades zu inflexibel sind, d.h. ein Kurvensegment kann dann nicht durch die zwei Endpunkte gehen und gleichzeitig in beiden Endpunkten eine vorgegebene Steigung besitzen Polynome höheren Grades leicht oszillieren und der Rechenaufwand stark ansteigt. parametrisierte kubische Kurven die Kurven geringster Ordnung sind, die in drei Dimensionen nicht planar sind (ein Polynom zweiter Ordnung definiert eine Ebene!). • Für spezielle Zwecke: Polynome höherer Ordnung (z.B. aerodynamische Oberflächen, Flugzeugbau) Interpolation: Lagrange Polynome • ein Polynom möglichst niedrigen Grades, das durch alle Stützpunkte geht. Für n+1 Punkte: Polynom n´ten Grades n n i 0 j 0 j i y yi x xj xi x j – Rechenaufwand wächst mit dem Quadrat der Anzahl der Stützstellen, – Polynome neigen zum Überschwingen, insbesondere in der Nähe der Randpunkte. Interpolation durch kubische Splines • Kubische Splines sind stückweise kubische Polynome, d.h. zwischen zwei Stützpunkte kommt je ein Polynom Si(x) dritten Grades: Si(x) = ai(x- xi)3 + bi(x- xi)2 + ci(x- xi) + di • Die 4 Koeffizienten werden so gewählt, daß die Kurve an allen Übergangsstellen zweimal stetig differenzierbar ist. • Übergangsbedingungen: si ( xi ) yi dsi ( xi ) dsi 1 ( xi ) dx dx si ( xi 1 ) yi 1 2 2 d si ( xi ) d si 1 ( xi ) 2 2 dx dx Beispiel mit 4 Punkten • Drei Polynome: 12 Unbekannte si ( xi ) yi si ( xi 1 ) yi 1 dsi ( xi ) dsi 1 ( xi ) dx dx d 2 si ( xi ) d 2 si 1 ( xi ) 2 2 dx dx Lineares Gleichungssystem mit 10 Gleichungen: 2 Unbekannte können willkürlich festgelegt werden Beispiel: Natürliche kubische Splines mit d 2 s1 ( x1 ) 0 2 dx d 2 sn 1 ( xn ) 0 2 dx für i= 1...3 für i= 2, 3 Kubische Splines • Lineares Gleichungssytem mit schnellem Lösungsverfahren • Nachteile: – Jeder Kurvenabschnitt ist von allen Stützpunkten abhängig – kann nicht in Teilkurven zerlegt werden • Vorteile: – Glatte Kurve, zweimal stetig differenzierbar – Geringes Überschwingen Interpolation nach Akima • Verläßt man die Forderung nach zweimaliger Differenzierbarkeit, so kann die Kurve leichter in Teilbereiche zerlegt werden. Nach dem Verfahren von Akima (Akima-Interpolation) versucht man, durch eine (heuristische) Bestimmung der Koeffizienten eine für das Auge akzeptable Kurve zu erzeugen. Parameterdarstellung von Kubischen Splines • Jedes räumliche Kurvensegment Si(u) = (x,y,z)(u) eines Splines läßt sich in der Parameterdarstellung folgendermaßen schreiben: xi(u) = aiu3 + biu2 + ciu + di 0 u 1 yi(u) = eiu3 + fiu2 + giu + hi zi(u) = iiu3 + jiu2 + kiu + li • Mit der Matrix C und dem Vektor T 3 u ai bi ci d i 2 e f g h u i i i i T C i j k l u i i i i 1 m n o p i i i i ergibt sich Si (u ) C T Parameterdarstellung von Kubischen Splines • Si´(u) ist der Tangentenvektor der Kurve. • Werden zwei Kurvensegmente verbunden, so heißt die Kurve geometrisch stetig. • Sind die Tangentenvektoren in Betrag und Richtung gleich, so ist die Kurve stetig. • Jedes kubische Polynom hat vier Koeffizienten. Damit können insgesamt 4 Größen festgelegt werden. Man unterscheidet demnach: – 2 Endpunkte und 2 Tangentenvektoren: hermitesche Kurven – 2 Endpunkte und 2 weitere Kontrollpunkte, die die Tangenvektoren in den Endpunkten festlegen – 4 Kontrollpunkte, die nicht auf der Kurve liegen: Approximation durch Bezierkurven, Splines Interpolation mit kubischen Hermite-Polynomen • Polynominterpolation ist nicht darauf beschränkt, Punkte zu interpolieren, sondern man kann auch Ableitungen an den Stützstellen interpolieren. Hermite-Polynome: H0(u) = (1 - u)2(1 + 2u) H1(u) = u (1 - u)2 H2(u) = u2 (1 - u) H3(u) = (3 - 2u) u2 • Die Koeffizienten eines damit erstellten Polynom drittes Grades q(u) = c0H0(u) + c1H1(u) + c2H2(u) + c3H3(u) können geometrisch gedeutet werden: • Sind zwei Punkte P0, P1 mit den zwei dazugehörigen Tangentenvektoren m0 und m1 zu interpolieren, so ergibt sich q(u) = P0H0(u) + m0H1(u) + m1H2(u) + P1H3(u) Approximation von Kurven: Bézier-Kurven • Bernstein-Polynome n i B (u ) u (1 u ) n i i n i 0 u 1 Eigenschaften: – Sie nehmen im Intervall [0,1] keine negativen Werte an. – Die Summe der Werte über alle Polynome ist immer gleich eins. – Jedes Polynom besitzt im Intervall genau ein Maximum (Grad > 0). – Die Maxima sind gleichabständig über das Intervall [0,1] verteilt. • Bezier-Kurve: n B (u ) Pi B (u ) i 0 mit den n+1 Stützstellen xi Pi yi n i Bézier-Kurve mit vier Stützstellen 3 B (u ) Pi B (u ) i 0 3 i B(u ) (1 u )3 P0 3u (1 u ) 2 P1 3u 2 (1 u ) P2 u 3 P3 Beispiel, kubische Bézier-Kurve: P0 = (0, 0) P1 = (2, 4) P2 = (6, 4) P3 = (4, 4) Allgemein: Ordnung = Zahl der Stützpunkte - 1 Bézier-Kurve mit vier Stützstellen 4 3,5 3 2,5 y P 2 1,5 1 0,5 0 0 1 2 3 4 5 6 Gewichtsfunktionen der Bézier-Approximation für n= 2,3,4 B02 B03 B12 B22 B13 B04 B23 B04 B14 B24 B34 B33 Eigenschaften der Bézier-Darstellung • Die ersten beiden beziehungsweise die letzten beiden Punkte bestimmen die Tangenten am Anfang beziehungsweise am Ende. • Die Kurve verläuft im Innern der konvexen Hülle aller Kontrollpunkte. • Die affine Transformation einer Kurve erhält man durch affine Transformation ihrer Kontrollpunkte. • In CAD-Programmen: Kontrolle der Form durch verschieben der Stützpunkte und verändern der Tangentenvektoren • Weit verbreitet (auch für Flächendarstellung) • Nachteil: Es ist schwierig, die Tangenten benachbarter Flächen aneinander anzupassen. Bézier-Splines • Splines deren Segmente aus Bézier-Polynomen besteht. • Meist kubische Bézierkurven. B-Splines • Gleiche Struktur wie Bézier-Kurven • Aber: schnell abfallende Gewichtsfunktionen Ni,m (u) anstatt Bi,n (t) • Kein globaler Einfluß aller Stützstellen mehr. • Maximaler Grad der Kurve gering. • Resultat: Der Einfluß jeder Stützstelle Pi wird auf einen Bereich in der Umgebung der Stützstelle beschränkt. n C (u ) Pi N i ,m (u ) i 0 mit 0 u 1 B-Splines • Aufteilung der Kurve in Teilstücke (Segmente). • Äquidistanter Knotenvektor für Spline der Ordnung m: T = (t0 , ... ,tn+2*(m-1)) 0 für j<m für tj gilt j = 0 ... n+2*(m-1) tj= (j-m+1)/n für m <=j<n+m-1 1 für j>=n+m-1 • Beispiel: m=3, n=5 (6 Stützpunkte) T = (0, 0, 0, 0.2, 0.4, 0.6, 0.8, 1, 1, 1) B-Splines: Gewichtsfunktionen • Die Gewichtsfunktionen Ni,m (u) von der Ordnung m (Grad m-1) sind stückweise rekursiv definiert: Ordnung m=1: 1 für ti u ti+1 Ni,m(u) = 0 sonst u ti ti m u N i ,m 1 (u ) N i 1,m 1 (u ) Ordnung m>1: N i ,m (u ) ti m 1 ti ti m ti 1 B-Splines: Gewichtsfunktionen • Beispiel, m=2: u ti ti 2 u N i , 2 (u ) N i ,1 (u ) N i 1,1 (u ) ti 1 ti ti 2 ti 1 eingesetzt: u ti N i , 2 (u ) ti 1 ti ti 2 u N i , 2 (u ) ti 2 ti 1 N i , 2 (u ) 0 für ti u ti+1 für ti+1 u ti+2 sonst B-Splines: Gewichtsfunktionen B-Splines m=3 • Für m=3 ergeben sich die quadratischen B-Splines: u ti ti 3 u N i ,3 (u ) N i , 2 (u ) N i 1, 2 (u ) ti 2 ti ti 3 ti 1 eingesetzt: u 2 2uti ti N i ,3 (u ) (ti 1 ti )(ti 2 ti ) 2 ti ti 2 u (ti 2 ti ) u 2 ti 1ti 3 u (ti 3 ti 1 ) u 2 N i ,3 (u ) (ti 2 ti )(ti 2 ti 1 ) (ti 3 ti 1 )(ti 2 ti 1 ) u 2 2uti 3 ti 3 N i ,3 (u ) (ti 3 ti 1 )(ti 3 ti 2 ) für ti u ti+1 für ti+1 u ti+2 2 N i ,3 (u ) 0 für ti+2 u ti+3 sonst Gewichtsfunktionen der quadratischen B-SplineApproximation Gewichtsfunktionen der quadratischen B-SplineApproximation • Gewichtsfunktionen der quadratischen B-Spline-Approximation (m=3) für 5 Punkte (n=4), T = (0,0,0,0.25,0.5,0.75,1.0,1.0,1.0) • Die Summe aller Gewichtsfaktoren ergibt für jeden Wert t stets 1. Da am Anfangs- und Endpunkt jeweils nur eine einzige Gewichtsfunktion ungleich Null ist, wird der Anfangs- und der Endpunkt immer exakt getroffen. B-Splines mit m=2,...,7 • Je größer m desto weiter von den Stützstellen entfernt. • m=2: Polygonzug durch die Stützpunkte (äußere Kurve) Eigenschaften von B-Splines • Die Kurve verläuft im Intervall zwischen zwei Knoten innerhalb der konvexen Hülle der zugehörigen p+1 Kontroll-unkte (Ordnung p). • Keine Ebene hat mehr Durchstoßpunkte mit der Kurve als mit dem Polygon der Kontrollpunkte. • Die affine Transformation einer Kurve erhält man durch die affine Transformation ihrer Kontrollpunkte. • Wenn ein Kontrollpunkt verändert wird, so beeinflußt er nur p+1 Knotenintervalle (Ordnung p). • Eine B-Spline-Kurve kann durch Einfügen von Vielfachknoten exakt in eine Folge von Bézierdarstellungen überführt werden. Non-Uniform B-Splines • Uniform B-Splines (UBS) bezeichnet: Die Knoten liegen gleichabständig, was bei gleichmäßig verlaufenden Kurven eine gute Lösung darstellt. • Non-Uniform B-Splines (NUBS): beliebige Knotenfolgen, die errechnet oder vom Benutzer vorgegeben werden können: – Damit ist eine bessere Anpassung an wechselnde Verhältnisse – präzisere Kontrolle der Form – Darstellung einer wesentlich umfangreicheren Klasse von Formen möglich. UBS der Ordnung 3 (Grad 2: Parabeln) mit 7 Stützpunkten P3 P1 P6 t=0.6 P0 P5 t=0.4 t=0.2 P2 P4 t=0.8 • Kontrollpunkte (Pole): P0, Pl, P2, P3, P4, P5, P6 Knotenvektor: T = (0,0,0,0.2,0.4,0.6,0.8,1,1,1) • Eigenschaften dieser UBS 3. Ordnung: – – – – Die Kurve besteht stückweise aus Polynomen der Ordnung 3 (Parabeln). Die Knoten sind (gemessen im Parameterwert t) gleichabständig. An den Knoten ist die Kurve punktstetig und tangentenstetig. Das Polygon ist in allen Knoten Tangente an die Kurve (dies gilt nur für die Ordnung 3). – Die inneren Knoten liegen genau in der Mitte zwischen zwei Vergleich UBS - NUBS • UBS: – In Anwendungsprogrammen kann im allgemeinen jeder beliebige Pol des UBS angefaßt und in seiner Lage interaktiv verändert werden. – Die Veränderung macht sich jeweils über m, hier also 3 Knotenintervalle bemerkbar, d.h. z.B. beim Pol P3 zwischen 0.2 < u < 0.8. • NUBS: – Bei einem NUBS wird gegenüber einem UBS die Forderung, daß der Knotenabstand bei den inneren Knoten (gemessen im Parameterwert u) gleichabständig ist, fallengelassen und es werden beliebige Knotenwerte zugelassen. – Es darf kein innerer Knoten öfter als zweifach auftreten. – Durch Variation eines inneren Knotens verschiebt sich der Punkt, in dem das Polygon Tangente an die Kurve ist. Das Polygon bleibt erhalten. NUBS der Ordnung 3 mit 7 Stützpunkten P3 P1 P0 P6 t=0.5 P5 t=0.4 t=0.2 P2 P4 t=0.8 • Kontrollpunkte (Pole): P0, Pl, P2, P3, P4, P5, P6 Knotenvektor: T = (0,0,0,0.2,0.4,0.5,0.8,1,1,1) • Wie UBS, aber anderer Knotenvektor: Das Verschieben des Knotens von u = 0.6 nach u = 0.5 vergrößert den Parabelabschnitt zwischen den beiden Knoten 0.5 und 0.8. Das Polygon bleibt in den Knoten Tangente an die Kurve. NUBS: Doppelter Knoten P3 P1 P0 P6 t=0.5 t=0.2 P2 P5 P4 t=0.8 • Kontrollpunkte (Pole): P0, Pl, P2, P3, P4, P5, P6 Knotenvektor: T = (0,0,0,0.2,0.5,0.5,0.8,1,1,1). • Durch das Verschieben des Knotens u = 0.4 nach u = 0.5 und des Knotens u = 0.6 nach u = 0.5 entsteht bei t = 0.5 ein doppelter Knoten und ein Parabelabschnitt verschwindet. Der NUBS ist bei u = 0.5 nicht tangentenstetig, sondern besitzt dort einen Knick. Bei NUBS ist es also möglich, einen Knick im Inneren einer Kurve zu erzeugen Rationale Darstellungen: URBS und NURBS • Der Kreis ist durch parametrische Polynome nicht exakt darstellbar ist und damit auch nicht durch Bézier- oder B-Spline-Formen. • Kreissegmente müssen immer approximiert werden. • Erweiterung auf rationale Formen: Kurvenpunkt als Quotient zweier Polynomdarstellungen • Kreisdarstellung: 1 u2 2u x(u ) y (u ) 2 1 u 1 u2 Rationale Darstellungen: URBS und NURBS • Kegelschnittsegmente: P0 (1 u ) 2 2 P1 g1u (1 u ) P2u 2 K (u ) (1 u ) 2 2 g1u (1 u ) u 2 Die Pi sind Punkte auf dem Kegelschnitt. • Der Gewichtsfaktor g1 bestimmt, um welchen Kegelschnitt es sich handelt: – g1 < 1 : – g1 = 1 : – g1 > 1 : Ellipse (Sonderfall: Kreis) Parabel Hyperbel • Mit rationalen Funktionen können alle Arten von Kegelschnitten und Kegelschnittsegmenten dargestellt werden. • Realisierung in der Software ohne eine Vielzahl von Fallunterscheidungen URBS und NURBS n C (u ) Pg N i 0 n i i g N i 0 i i ,m i ,m (u ) (u ) mi t 0 u 1 • Bei rationalen B-Splines wird jedem Kontrollpunkt (Stützpunkt, Pol) pi ein Gewichtsfaktor gi zugeordnet. • Nicht rationale B-Splines gehen aus den rationalen hervor, indem alle Gewichte = 1 gesetzt werden.. • Pole mit Gewichten größer als 1 ziehen die Kurve zu sich heran. • Pole mit Gewichten kleiner als 1 stoßen die Kurve von sich ab. • Bei Gewichten gleich 1 ergibt sich der normale Verlauf. URBS • Variation eines Gewichts P1 P2 0.1 0.25 0.5 0.75 1 1.5 5 8 P0 URBS Beispiel: Ordnung 3 mit 7 Stützpunkten P3 P1 P6 t=0.6 t=0.4 P0 t=0.2 P2 t=0.8 P5 P4 • Kontrollpunkte (Pole): P0, Pl, P2, P3, P4, P5, P6 Knotenvektor: T = (0,0,0,0.2,0.4,0.6,0.8,1,1,1) Gewichtsvektor: G = (1,1,1,2,0.2,1,1) • URBS mit gleichem Polygon und den gleichem Knotenvektor wie UBS, aber: Gewichte != 1 • P3 mit dem Gewicht 2 zieht die Kurve zu sich heran. • P4 mit dem Gewicht 0.2 stößt die Kurve von sich ab. • Die Kurve ist in den Knoten tangentenstetig. • Das Polygon bleibt in den Knoten Tangente an die Kurve. NURBS Beispiel: Ordnung 3 mit 7 Stützpunkten P3 P1 P6 t=0.75 P0 P5 t=0.4 t=0.2 P2 P4 t=0.8 • Kontrollpunkte (Pole): P0, Pl, P2, P3, P4, P5, P6 Knotenvektor: T = (0,0,0,0.2,0.4,0.75,0.8,1,1,1) Gewichtsvektor: G = (1,1,1,2,0.2,1,1) • Der Knotenvektor ist gegenüber dem letzten Beispiel verändert. Diese Kurve ist jetzt non-uniform, also ein NURBS. NURBS Beispiel: Gewichtsvektor verändert P1 P3 P6 P5 t=0.7 P0 t=0.2 P2 t=0.3 P4 t=0.8 • Kontrollpunkte (Pole): P0, Pl, P2, P3, P4, P5, P6 Knotenvektor: T = (0,0,0,0.2,0.3,0.7,0.8,1,1,1) Gewichtsvektor: H = (1,1,1,0.2,1,1,1) • Der Gewichtsvektor wurde verändert: – P3 hat das Gewicht 0.2 und stößt die Kurve von sich ab. – Das Verschieben des Knotens t = 0.4 nach t = 0.3 (bzw. t = 0.6 nach t = 0.7) vergrößert den Kurvenabschnitt zwischen den beiden Knoten. NURBS: Eigenschaften • NURBS sind die am weitesten entwickelten Splines, die in CADSystemen Anwendung finden. • NURBS können modifiziert werden durch – – – – Verändern der Koordinaten der Pole Verändern des Knotenvektors Einfügen neuer Knoten Verändern der Gewichte der Pole • Mit diesen Möglichkeiten werden NURBS auch extremen DesignAnforderungen gerecht. Vergleich der Kurvendarstellungen • Bei einer Beschränkung auf parametrisierte kubische Kurven können die Darstellungen ineinander konvertiert werden. • Für die interne Darstellung können z.B. NURBS benutzt werden, während der Benutzer interaktiv die Kontrollpunkte und Tangentenvektoren von Bézier- oder hermiteschen Kurven manipuliert. • Bei der Ausgabe über Postscript-Geräte müssen die Kurven auf jeden Fall in die Bézierform umgewandelt werden. • Der Benutzer eines interaktiven CAD-Systems hat im allgemeinen mehrere Formen zu Auswahl, während intern in neueren Systemen meist die NURBS-Darstellung benutzt wird. Flächen: Quadriken • Die implizite Flächengleichung: f(x,y,z)= ax2 + by2 + c z2 + 2dxy +2eyz + 2fxz + 2gx +2hy +2jz +k =0 • • • • • definiert die Familie der quadratischen Flächen oder Quadriken Einheitskugel um den Ursprung: a=b=c=-k=1 und d=e=f=g=h=j=0 Ebene: a=b=c=d=e=f = 0 Einfache Berechnung der Flächennormalen Einfache Berechnung von Schnittpunkten zweier Flächen Einfache Translation und Skalierung Flächen • Patches: größere Flächen werden aus kleinen Teilen (Segmente, Pflaster) zusammengesetzt. • Kantenfreies Aneinanderfügen von Pflastern: beim Zusammensetzen muß ein kontinuierlicher Übergang erzeugt werden, ohne daß ein Knick in der Steigung senkrecht zur Randkurve benachbarter Pflaster auftritt • Die Methoden zur Flächenbildung entsprechen den Methoden für Kurven. • Flächendarstellungen: – Interpolation – Bézier-Approximation – B-Spline-Approximation Paramaterdarstellung von Flächen • Die Parameterdarstellung einer Fläche: x(u, v) q(u, v) y (u, v) z (u, v) 0 u 1 0 v 1 • Randkurven der Fläche: (0,v), (1,v), (u,0) und (u,1) Flächenapproximation mit Dreieckselementen • Approximation einer Fläche durch ein Netz von Dreieckselementen. • Punkte innerhalb der Dreiecksfläche durch Interpolation der Eckpunkte: F(u,v) = u p1 + v p2 + (1-u-v) p3 mit 0(u + v)1 • Eckpunkte: F(1,0) = p1 F(0,1) = p2 F(0,0) = p3 • Begrenzungslinien: Strecke p1p3: F(u,0) Strecke p2p3: F(0,v) Strecke p1p2: F(u,1-u) Approximation durch Dreiecke • Vorteile: – Alle Punkte des Dreiecks liegen auf einer Ebene -> einfache Operationen. – Sehr einfache Flächendefinition. Operationen mit Flächen (z.B. Schnitte) sind durch einfache Algorithmen realisierbar. • Nachteile: – Großer Speicherbedarf für das Dreiecksnetz – Hoher Rechenaufwand der Flächenoperationen. Flächenapproximation durch Vierecksflächen • Verwendet ein Netz von Vierecksflächen • Bilineare Interpolation zwischen den Eckpunkten: F(u,v) = (1-u)(1-v) p1 + (1-u)v p2 + u(1-v) p3 + u v p4 mit 0 u,v 1 • Eckpunkte: F(0,0) = p1, F(0,1) = p2 F(1,0) = p3, F(1,1) = p4 • Begrenzungslinien: p1 p2 : F(0,v) p1 p3 : F(u,0) p2 p4 : F(u,1) p3 p4 : F(1,v) Flächenapproximation durch Viereckflächen • Flächenelemente können gekrümmt sein, denn 4 Punkte müssen nicht in einer Ebene liegen • Für eine gleich gute Approximation werden weniger Flächenelemente als bei den Dreieckselementen benötigt. • Der Speicherbedarf nimmt ab • Der Aufwand zur Berechnung von geometrischen Operationen nimmt zu. Freiformflächen: Coons´sche Flächen • Coons 1967: Methode zur Bildung von Freiformflächen: • Zwischen 4 Randkurven R(u,0), R(u,1), R(0,v) und R(1,v) wird ein Flächenelement aufgespannt. • Fläche F1(u,v): lineare Interpolation zwischen R(0,v) und R(1,v) F1(u,v) = (1-u) R(0,v) + u R(1,v) • Fläche F2(u,v): lineare Interpolation zwischen R(u,0) und R(u,1) F2(u,v) = (1-v) R(u,0) + v R(u,1) • Fläche G(u,v): bilineare Interpolation zwischen den Eckpunkten G(u,v) = (1-u)(1-v) p1 + (1-u)v p2 + u(1-v) p3 + uv p4 • Coons´sche Fläche: C(u,v) = F1(u,v) + F2(u,v) - G(u,v) Freiformflächen: Coons´sche Flächen Freiformflächen: Bézier-Flächen • Bézier-Flächen: Erweiterung des Konzeptes der Bézier-Kurven auf den Raum. • Die Eckpunkte eines Flächenstücks liegen fest, während die anderen Punkte die Fläche nur approximieren. • Durch eine (n+1)(m+1)-Matrix von Stützpunkten pi,j wird eine Bézier-Fläche aufgespannt durch F(u,v) = pi,jBi,n(u)Bj,m(v) mit 0 u,v 1 und Bi,n (u) = ui(1-u)n-i Bj,m (v) = vj(1-v)m-j • Bi,n (u) bzw. Bj,m (v) sind die Bernstein-Polynome. • Bézier-Flächen sind das kartesische Produkt von Bézier-Kurven. Freiformflächen: Tensorprodukt-Flächen • Das gleiche Prinzip ist auf B-Splines und NURBS anwendbar F(u,v) = pi,jNi,n(u)Nj,m(v) mit 0 u,v 1 • Je nach Typ der Gewichtsfunktionen Nj,m(v) und Ni,n(u) ergeben sich B-Splines oder NURBS • Gewichtsfunktionen Nj,m(v) und Ni,n(u) müssen nicht gleicher Ordnung sein • B-Splines häufig verwendet, aber einfachere Flächen wie z.B. Zylinder können nicht genau nachgebildet werden • NURBS: jede Fläche darstellbar, aber hoher Rechenaufwand Koordinatensysteme und Transformationen: Homogene Koordinaten • Das dreidimensionale Koordinatensystem (x, y, z) wird durch die Koordinate w erweitert • Das Quadrupel (x, y, z, w) stellt die homogenen Koordinaten des Punkts P = (x/w, y/w, z/w) dar • Standarddarstellung: w = 1, P=(x, y, z) => (x, y, z, 1) • Überführen in die Standarddarstellung: Teile durch w • Vorteile: – Transformationen (Drehung, Verschiebung, Skalierung) können als Matrix dargestellt werden – Hintereinanderausführung von beliebigen Transformationen durch MatrixMultiplikation Translation in Homogenen Koordinaten • Verschiebung des Punktes P=(x, y, z) um den Vektor (a, b, c) x 1 y 0 z * 0 1 a 0 0 0 x a x' 1 0 0 y b y' 0 1 0 zc z' b c 1 1 1 1 0 • mit P’= (x’, y’, z’): P’=P*T(a, b, c) wobei T (a, b, c) 0 a • Hintereinanderausführung: T(a1, b1, c1)*T(a2, b2, c2) = T(a1+ a2, b1+ b2 , c1+ c2) 0 0 0 1 0 0 0 1 0 b c 1 Skalierung in Homogenen Koordinaten • Skalierung des Punktes P=(x, y, z) um die Faktoren (a, b, c) x a y 0 z * 0 1 0 0 0 0 ax x' b 0 0 by y ' 0 c 0 cz z' 0 0 1 1 1 • mit P’= (x’, y’, z’): P’=P*S(a, b, c) wobei a 0 S (a, b, c) 0 0 • Hintereinanderausführung: S(a1, b1, c1)*S(a2, b2, c2) = S(a1*a2, b1*b2 , c1*c2) 0 0 0 b 0 0 0 c 0 0 0 1 Drehungen in homogenen Koordinaten: z-Achse • Rechtshändiges Koordinatensystem: • Drehung mit dem Winkel a um die z-Achse gegen den Uhrzeigersinn: P’ = Rz(a)*P mit cos(a ) sin( a ) sin( a ) cos(a ) Rz (a ) 0 0 0 0 0 0 0 0 1 0 0 1 y P´ x' x cos(a ) y sin( a ) y ' x sin( a ) y cos(a ) z' z a P x Händigkeit • Rechtshändiges Koordinatensystem: cos(a ) sin( a ) sin( a ) cos(a ) Rz (a ) 0 0 0 0 z 0 0 0 0 1 0 0 1 y x • Linkshändiges Koordinatensystem: cos(a ) sin( a ) sin( a ) cos(a ) Rz (a ) 0 0 0 0 0 0 0 0 1 0 0 1 z x y Drehungen in homogenen Koordinaten: y-Achse • Drehung mit dem Winkel b um die y-Achse: P’ = Ry(b)*P mit cos( b ) 0 Ry ( b ) sin( b ) 0 0 sin( b ) 0 1 0 0 0 cos( b ) 0 0 0 1 x' x cos( b ) z sin( b ) y' y z ' x sin( b ) z cos( b ) Drehungen in homogenen Koordinaten: x-Achse • Drehung mit dem Winkel g um die y-Achse: P’ = Rx(g)*P mit 0 0 1 0 cos(g ) sin( g ) R y (g ) 0 sin( g ) cos(g ) 0 0 0 0 0 0 1 x' x y ' y cos(g ) z sin( g ) z ' y sin( g ) z cos(g ) Kombination von Transformationen • Transformationen können durch Hintereinanderausführung kombiniert werden. • Beispiel: Rotation um mehrere Achsen: R = Rx . Ry . Rz • Achtung: A.B ist nicht notwendigerweise gleich B.A. • Soll die Rotation nicht um den Ursprung sondern um einen anderen Punkt stattfinden, so verschiebt man das Rotationszentrum in den Ursprung, führt die Rotation durch und verschiebt das Rotationszentrum wieder zurück: P´ = T-1.R.T.P • T-1 ist die inverse Transformationsmatrix: T . T-1 = 1 wobei 1 die Einheitsmatrix darstellt. Transformation des Koordinatensystems Beispiel: Drehungen um die z-Achse • Drehung mit dem Winkel a um die z-Achse gegen den Uhrzeigersinn: P’ = Rz(a)*P mit cos(a ) sin( a ) sin( a ) cos(a ) Rz (a ) 0 0 0 0 0 0 0 0 1 0 0 1 x' x cos(a ) y sin( a ) y ' x sin( a ) y cos(a ) z' z y´ y P a x´ x Projektionen: Parallelprojektion • Zur Darstellung müssen die dreidimensionalen Objekte auf die 2DEbene des Bildschirms projiziert werden. • Senkrechte Projektion auf eine Ebene, die zu einer der Ebenen, die die Koordinatenachsen aufspannen, parallel ist. • In Matrixschreibweise ergibt sich für die Abbildung auf die Ebene z = 0: x' x 1 y' y 0 z' z * 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 Perspektivische Projektion • Perspektivische Projektion auf eine Ebene parallel zu den Koordinatenachsen (Blickpunkt A(0,0,-Z0), Ebene z=0): x´ = x/(1+z/Z0) y´ = y/(1+z/Z0) z´ = 0 x' x 1 y' y 0 z' z * 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 Z0 1 x x x ' x' 1 z / Z0 y y y' y' oder z' 0 z' 1 z / Z 0 z (/w) 0 1 1 1 Z0 1 Viewing Pipeline: Perspektivprojektion von Weltkoordinaten zum Schirmbild Parallelprojektion von Weltkoordinaten zum Schirmbild Viewing Pipeline • Bis zu 5 Koordinatentransformationen hintereinander Viewing pipeline: – – – – – – – Composite modelling transformation • Local modelling transformation • Global modelling transformation World Coordinates WC Optional: modelling clipping View orientation transformation View Reference Coordinates VRC View mapping transformation View Clip Normalized Projection Coordinates NPC Workstation transformation Workstation clip Device Coordinates DC Viewing Pipeline: CMT • Composite modelling transformation (CMT) -> World Coordinates (WC): Transformation von Modellkoordinaten in Weltkoordinaten, besteht aus zwei Teiltransformationen: – Local modelling transformation Die lokalen Koordination eines Objekts werden transformiert (z.B. wird eine Diode in einer Schaltung zweimal eingebaut, einmal in der ursprünglichen Lage und einmal um 900 gedreht) – Global modelling transformation Alle lokalen Objekte werden in Weltkoordinaten überführt. • Optional: modelling clipping Zur Reduzierung der Rechenzeit können Objekte eliminiert oder reduziert werden. Alles außerhalb des view volume wird entfernt. Viewing Pipeline: Viewing Orientation Transformation • Viewing orientation transformation (V0) -> View Reference Coordinates (VRC) Die drei Achsen u, v und n des VRC: • Die Projektionsebene (view plane) ist immer parallel zur uv-Ebene. • Ursprung: Blickreferenzpunkt (view reference point, VRP) • n-Achse: view plane normal, VPN, Normalenvektor zur Projektionsebene (Verbindung Auge-VRP) • view up vector (VUV): „oben“ auf dem Bildschirm • v-Achse: Projektion des VUV-Vektors auf die Projektionsebene. (VPN und VUV dürfen niemals parallel sein) • u-Achse: Kreuzprodukt von v und n VPN und VUV Viewing Mapping Transformation • Viewing mapping transformation (Vm ) -> Normalized Projection Coordinates (NPC) • Im NPC liegen alle sichtbaren Punkte im Einheitswürfel des ersten Oktanten (0<=x,y,z<=1) • Benötigte Daten: – Entfernung der Projektionsebene auf der N-Achse (view plane distance) wird häufig gleich Null gewählt, d.h. view plane und UV-Ebene fallen zusammen. – Projection reference point, PRP. Wandert der PRP ins Unendliche, so erhalten wir eine Parallelprojektion. – Front plane distance, back plane distance • View Clip: Alles außerhalb des sichtbaren Kegelstumpfes entfernen. View Mapping Transformation Workstation Transformation and Clip • Workstation transformation and clip (W) -> Device Coordinates (DC) 2D-Transformation auf die wirklichen Gerätekoordinaten. Die Skalierung der Achsen kann bedingt durch die Hardware oder den Wünschen des Benutzers (Verzerrung, Scherung) durchaus verschieden sein. • Vor jeder Transformation kann ein Clipping-Prozeß vorgenommen werden, bei der letzten Transformation auf das Workstation Window ist er unbedingt nötig. Viewing Pipeline: Transformationsmatrix • Die gesamte Transformationsmatrix ergibt sich zu T = W Vm Vo CMT Größe eines Objekts auf der Projektionsebene • Die Größe eines Objekts auf der Projektionsebene ist von den relativen Positionen des Fluchtpunkts (PRP, projection reference point), des Objekts und der Projektionsebene abhängig. Double Buffering • Zwei Frame-Buffer zur Darstellung von bewegten Bildern: • Ein Frame-Buffer wird zur Bilddarstellung benutzt • Im Hintergrund wird das nächste Bild berechnet und im 2. Frame Buffer abgelegt • Nach Ende der Rechnung wird der zweite Frame-Buffer der aktive. Ablauf der Bildschirmdarstellung