CG Computer Graphik I Koordinaten, Rota5on und Orien5erung Marc Alexa, TU Berlin 1 CG § Anwendung • • 3D Dateneingabe Repräsenta<on von 3D Daten – – – § § § 3D Graphik-­‐Pipeline Primi<ve Transforma<onen Räumliche Datenstrukturen Geometrieverarbeitung Rasterisierung Ausgabe Marc Alexa, TU Berlin 2 CG § § § § § § Homogene Koordinaten Koordinaten beschreiben Punkte Vektoren beschreiben eine Richtung und einen Betrag Punkt ≠ Vektor Punkt p = [px,py,pz,1]T Vektor v = [vx,vy,vz,0]T Rechnen mit Matrizen funk<oniert wie gewünscht Marc Alexa, TU Berlin 3 CG Homogene Koordinaten § Punkt -­‐ Vektor Rechenregeln • • • • • • • • Punkt + Punkt = undefiniert Vektor + Vektor = Vektor Punkt + Vektor = Punkt Punkt -­‐ Punkt = Vektor Skalar Vektor = Vektor Skalar Punkt = Punkt (Skalar = 1), Vektor (Skalar = 0), undefiniert Σ Skalar Vektor = Vektor Σ Skalar Punkt = Punkt (Σ Skalar = 1), Vektor (Σ Skalar = 0), undef. Marc Alexa, TU Berlin 4 CG Was ist eine Rota5on? § Formale Defini<on hängt von der Beschreibung ab § Viele Beschreibungen • • • • • • Rota<onsmatrix Eulerwinkel Achse und Winkel Rota<onsvektor Sphärische Koordinaten Einheits-­‐Quaternionen Marc Alexa, TU Berlin 5 CG Orien5erung und Rota5on § Rota<on • Kreisförmige Bewegung § Orien<erung • Zustand • Gegeben ein Koordinatensystem, so kann die Orien<erung als Rota<on einer Referenzorien<erung beschrieben werden § Analogie • (Punkt : Vektor) verhält sich wie (Orien<erung : Rota<on) • In beiden Fällen (Zustand : Bewegung) Marc Alexa, TU Berlin 6 CG 2D Orien5erung π 2 θ π or −π 0 Polarkoordinaten − Marc Alexa, TU Berlin π 2 7 CG 2D Orien5erung π 2 θ θ (t ) π or −π Time 0 − Marc Alexa, TU Berlin π π 2 −π Die Bewegung ist kon<nuierlich, die Repräsenta<on nicht 8 CG 2D Orien5erung π 2 θ θ (t ) π or −π Time 0 − Marc Alexa, TU Berlin π π 2 −π Keine 1-­‐1 Beziehung zwischen Orien<erung und Repräsenta<on 9 CG Extra Parameter Y 2 2 x + y =1 ( x, y ) θ Marc Alexa, TU Berlin X 10 CG Extra Parameter 2x2 Rota5onsmatrix ist eine Möglichkeit zusätzliche Parameter zu verwenden & cos θ $$ % sin θ Marc Alexa, TU Berlin − sin θ # !! cos θ " Y 2 2 x + y =1 ( x, y ) θ X 11 CG Komplexe Zahlen Imaginär x + iy θ Marc Alexa, TU Berlin Real 12 CG Euler-­‐Beziehung, Exponen5alfunk5on Imaginär x + iy = cos θ + i sin θ =e x + iy θ Marc Alexa, TU Berlin iθ Real 13 CG Komposi5on Imaginär e i (θ +φ ) iθ =e e iφ θ +φ Real Marc Alexa, TU Berlin 14 CG 2D Rota5on § Komplexe Zahlen eignen sich zur Repräsenta<on von 2D Orien<erung, aber nicht 2D Rota<on § Eine Komplexe Zahl beschreibt nicht die Imaginär verschiedenen “Wege” zur gleichen Orien<erung • 120 Grad CCW • -­‐240 Grad CW • 480 Grad CCW θ Real θ − 2π Marc Alexa, TU Berlin 15 CG 2D Rota5on und Orien5erung § 2D Rota<on • Eine Rota<onsbewegung kann durch einen Rota<onswinkel eindeu<g angegeben werden • Der Rota<onswinkel ist unabhängig von der Wahl des Bezugssystems § 2D Orien<erung • Eine Parametrisierung der 2D Orien<erungen ohne Singularität erfodert zusätzliche Parameter – Z.B. Komplexe Zahlen, oder 2x2 Rota<onsmatrizen • Die Parametrisierung hängt von der Wahl des Bezugssystems ab Marc Alexa, TU Berlin 16 CG 3D Rota5on § Gegeben zwei Orien<erungen eines Starrkörpers, X X! Z! Z Y Y! Marc Alexa, TU Berlin wie viele Rota<onen sind nö<g um die eine Orien<erung in die andere zu überführen ? 17 CG 3D Rota5on § Gegeben zwei Orien<erungen eines Starrkörpers v̂ θ So wird eine Rota<on um eine feste Achse mit festem Winkel definiert Marc Alexa, TU Berlin 18 CG Eulerwinkel § Gimble • “Hardware” Implemen<erung der Eulerwinkel • Flugzeuge, Kameras Marc Alexa, TU Berlin 19 CG Eulerwinkel § Rota<on um drei orthogonale Achsen • 12 Kombina<onen – XYZ, XYX, XZY, XZX – YZX, YZY, YXZ, YXY – ZXY, ZXZ, ZYX, ZYZ § Gimble lock • Gleiche innere und äußere Rota<onsachse • Verlust eines Freiheitsgrades Marc Alexa, TU Berlin 20 CG Rota5onsvektoren v̂ vˆ : unit vector θ : scalar angle θ § Rota<onsvektor (3 Parameter) Marc Alexa, TU Berlin v = |θ| vˆ = ( x, y, z ) 21 CG 3D Orien5erung § Drei Parameter reichen nicht aus • Eulerwinkel – Nicht kon<nuierlich (bzw. keine 1-­‐1 Parametrisierung) – Gimble lock • Rota<onsvektoren – Nicht kon<nuierlich (bzw. keine 1-­‐1 Parametrisierung) π −π Marc Alexa, TU Berlin 22 CG Extra Parameter v̂ vˆ : unit vector θ : scalar angle θ § Axis-­‐Angle (3+1 Parameter) Marc Alexa, TU Berlin (θ , vˆ ) 23 CG Extra Parameter § Eulerparameter &θ # e0 = cos$ ! % 2" , e1 ) *e ' = vˆ sin & θ # $ ! * 2' % 2" *+e3 '( Marc Alexa, TU Berlin θ : rotation angle vˆ : rotation axis 24 CG Quaternionen § William Rowan Hamilton (1805-­‐1865) • Komplexe Zahlen 1833 x + iy Marc Alexa, TU Berlin wobei i 2 = −1 25 CG Quaternionen § William Rowan Hamilton (1805-­‐1865) • Komplexe Zahlen 1833 x + iy wobei • Quaternionen 1843 w + ix + jy + kz Marc Alexa, TU Berlin wobei i 2 = −1 i 2 = j 2 = k 2 = ijk = −1 ij = k , jk = i, ki = j ji = −k , kj = −i, ik = − j 26 CG Quaternionen William Thomson “… though beau2fully ingenious, have been an unmixed evil to those who have touched them in any way.” Arthur Cayley “… which contained everything but had to be unfolded into another form before it could be understood.” Marc Alexa, TU Berlin 27 CG Einheitsquaternionen § Einheitsquaternionen repräsen<eren 3D Rota<onen q = w + ix + jy + kz = ( w, x, y, z ) = ( w, v ) S 3 w2 + x 2 + y 2 + z 2 = 1 Marc Alexa, TU Berlin 28 CG Rota5on um eine beliebige Achse § Rota<on um die Achse v̂ mit dem Winkel θ ( x!, y!, z !) ( x, y , z ) θ p" = qpq −1 wobei v̂ θ θ# & q = $ cos , vˆ sin ! 2 2" % p = (0, x, y, z ) Rein imaginäres Quaternion Marc Alexa, TU Berlin 29 CG Einheitsquaternionen § Einheitselement q = (1,0,0,0) § Mul<plika<on q1q 2 = ( w1 , v1 )( w2 , v 2 ) = ( w1w2 − v1 ⋅ v 2 , w1 v 2 + w2 v1 + v1 × v 2 ) § Inverse q −1 = ( w,− x,− y,− z ) /( w 2 + x 2 + y 2 + z 2 ) = (− w, x, y, z ) /( w 2 + x 2 + y 2 + z 2 ) § Die Einheitsquaternionen sind • Abgeschlossen unter Mul<plika<on (und Inversion), • Aber nicht unter Addi<on (und Subtrak<on) Marc Alexa, TU Berlin 30 CG Einheitsquaternionen § An<podale Äquivalenz • q und –q repräsen<eren die selbe Rota<on Rq (p) = R−q (p) • 2-­‐1 Abbildung von S 3 nach SO(3) • Rota<onen sind “2 mal schneller” als in SO(3) Marc Alexa, TU Berlin 31 CG Konzepte § Orien<erung • Einheitsquaternionen parametrisieren 3D Orien<erungen ohne Singularität § (Endliche) Rota<on • Einfach als 3D Rota<onsvektoren § Infinitesimale Rota<on • Kann durch 3D Vektoren repräsen<ert werden • Vgl. auch schiefsymmetrische Rota<onsmatrix für kleine Winkel Marc Alexa, TU Berlin 32 Tangentenvektor CG (Infinitesimale Rota5on) Tq S 3 q Marc Alexa, TU Berlin 33 Tangentenvektor CG (Infinitesimale Rota5on) q −1 Tq S 3 q Marc Alexa, TU Berlin 34 Tangentenvektor CG (Infinitesimale Rota5on) TI S 3 I = (1,0,0,0) ( 0, x, y , z ) Winkelgeschwindigkeit −1 ω = 2q q Marc Alexa, TU Berlin 35 CG Exp und Log I log exp exp( v ) = exp(θ vˆ ) = (cosθ , vˆ sin θ ) Marc Alexa, TU Berlin 36 CG Exp und Log I log exp exp( v ) = exp(θ vˆ ) = (cosθ , vˆ sin θ ) Marc Alexa, TU Berlin Euler Parameter &θ # e0 = cos$ ! % 2" , e1 ) *e ' = vˆ sin & θ # $ ! * 2' % 2" *+e3 '( 37 CG Rota5onsvektor p1 R3 S 3 q1 u = p 2 − p1 p2 q2 p 2 = p1 + u = p1 + (p 2 − p1 ) Marc Alexa, TU Berlin 38 CG Rota5onsvektor p1 R3 u = p 2 − p1 S 3 I = q1−1q1 −1 1 q q2 p2 p 2 = p1 + u = p1 + (p 2 − p1 ) Marc Alexa, TU Berlin 39 CG Rota5onsvektor p1 R 3 u = p 2 − p1 ( v = log q1−1q 2 ) I = q1−1q1 −1 1 q q2 p2 p 2 = p1 + u = p1 + (p 2 − p1 ) Marc Alexa, TU Berlin q 2 = q1exp( v ) ( ( = q1exp log q1−1q 2 )) 40 CG Rota5onsvektor § Endliche Rota2on • Rota<ons-­‐Bewegung • Addi<on der Vektoren entspricht nicht der Konkatena<on u v e e ≠e u +v § Infinitesimale Rota2on • Winkelgeschwindigkeit • Addi<on der Vektoren entspricht Addi<on der Winkelgeschwindigkeiten Marc Alexa, TU Berlin 41 CG Spherical Linear Interpola5on § SLERP [Shoemake 1985] • Lineare Interpola<on zwischen zwei Orien<erungen slerpt (q1 , q 2 ) = q1 (q1−1q 2 ) t t = q1exp(t ⋅ log(q1−1q 2 )) 1− t Marc Alexa, TU Berlin 42 CG Spherical Linear Interpola5on slerpt (q1 , q 2 ) = q1 (q1−1q 2 ) t Marc Alexa, TU Berlin = q1exp(t ⋅ log(q1−1q 2 )) 43 CG § § § § § § § § § § Opera5onen Orien<erung Orien<erung = undefiniert Exp(Rota<on) Exp(Rota<on) = Exp(Rota<on) Orien<erung Exp(Rota<on) = Orien<erung Orien<erung-­‐1 Orien<erung = Exp(Rota<on) Log(Exp(Rota<on)) = Rota<on Log(Orienta<on) = undefined Skalar Rota<on = Rota<on Exp(Rota<on)Skalar = Exp(Rota<on) Rota<on + Rota<on = Rota<on Skalar Orien<erung = Orien<erung (Skalar = 1), Exp(Rota<on) (Skalar = 0) Marc Alexa, TU Berlin 44 CG Rota5onsmatrix oder Einheitsquaternion § In vielen Aspekten ähnlich • • • • Redundant Keine Singularität Gleiches Verhalten bzgl. Exp & Log Tangentraum hat physikalische Bedeutung § Warum/wann Quaternionen? • Weniger Parameter • Einfachere Rechenregeln mit weniger Opera<onen • Deswegen besseres numerisches Verhalten § Warum/wann Rota<onsmatrizen ? • 1-­‐1 Korrespondenz • Rota<onen und Transla<onen (bzw. auch die anderen linearen Transforma<onen) können einheitlich repräsen<ert werden Marc Alexa, TU Berlin 45 CG Umrechnung § Theore<sch ist die Umwandlung stets möglich und einfach § In der Praxis stehen ov Konven<onen im Weg § Quaternion zu Matrix & q 02 + q x2 $ $ 2q x q y R=$ $ 2q x q z $ % Marc Alexa, TU Berlin − q y2 − q z2 + 2q 0 q z − 2q 0 q y 0 2q x q y − 2q 0 q z q 02 − q x2 + q y2 − q z2 2q y q z + 2q 0 q x 0 2q x q z + 2q 0 q y 2q y q z − 2q 0 q x q 02 − q x2 − q y2 + q z2 0 0# ! 0! 0 !! 1 !" 46