Kein Folientitel

Werbung
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
zc
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
Herunterladen