Quaternionen
Transcription
Quaternionen
(5) Quaternionen Vorlesung „Animation und Simulation“ S. Müller UNIVERSITÄT KOBLENZ · LANDAU n Frage: … Der rekonstruierte Winkel ist zwischen 0 und 180, was ist mit größeren Winkeln? Antwort: die rekonstruierte Normale zeigt in die andere Richtung. … also kein Problem. y A 0 x r n O y A 0 x r UNIVERSITÄT KOBLENZ · LANDAU O S. Müller - 2 - Fazit: Orientierung 3 Werte, Gimbal Lock Euler/KardanWinkel Rotationsmatrix 9 Werte, schwer zu interpolieren lassen sich leicht hin/herrechnen Angle-Axis 4 Werte, keine Singularitäten UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 3 - Nachtrag: Herleitung des Drehtensors Da sich in mancher Literatur die Rotationsformel in anderer Notation findet, hier die Herleitung: r ' n n T cos E n n T sin Dn r E n n T E cos E cos n n T sin Dn r Einfügen der Einheitsmatrix: E (1 cos )n n T E sin Dn r Ausmultiplizieren: Es gilt (ohne Beweis): n nT E r n n r Dn n r Dn Dn r D2 n r r ' E sin Dn (1 cos ) D 2 n r Einsetzen liefert den Drehtensor: UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 4 - Beispiel 1: Rz r00 r10 r 20 r01 r11 r21 arccos r00 r11 r22 1 1 2 arccoscos z z UNIVERSITÄT KOBLENZ · LANDAU r02 cz r12 s z r22 0 r21 r12 2 sin 0 nx sz cz 0 0 0 1 r02 r20 2 sin 0 ny r10 r01 2 sin s s z z 2 sz nz 1 S. Müller - 5 - Bsp.: Eulerwinkel 50 50 50 Jede Orientierung/Rotation lässt sich auch durch eine Achse und einen Winkel beschreiben UNIVERSITÄT KOBLENZ · LANDAU (animiertes GIF: Gesamtbewegung) S. Müller - 8 - Bsp.: AxisAngle für konst. Eulerwinkel 135,135,135 45,45,45 270,270,270 UNIVERSITÄT KOBLENZ · LANDAU 225,225,225 (animiertes GIF: Gesamtbewegung) S. Müller - 9 - 1 , n1 Interpolation Jede Orientierung lässt sich durch einen Winkel und einen Vektor darstellen Winkel und Achse werden getrennt interpoliert Zur Interpolation der Drehachse wird zwischen n1 und n2 interpoliert; hierzu wird die Drehachse d und der Winkel q bestimmt: d n2 n1 q arccosn2 n1 Die interpolierte Drehachse n(t) ergibt sich durch Rotation von n1 um die Achse d um den interpolierten Winkel q. UNIVERSITÄT KOBLENZ · LANDAU t , nt n1 d q 2 , n2 n2 q t t q t 1 t 1 t 2 Bsp: konstante Winkelgeschw. n t Rd q n1 Alternative: Hermite-Kurven, ease-in/ease-out etc. S. Müller - 10 - Vergleich: Angle-Axis- vs. Euler-Interpolation Angle-Axis (animiertes GIF: Gesamtbewegung) Euler-Winkel (animiertes GIF: Gesamtbewegung) UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 11 - Vergleich: Angle-Axis- vs. Euler-Interpolation Angle-Axis Kein Gimbal Lock! (animiertes GIF: Gesamtbewegung) Euler-Winkel (animiertes GIF: Gesamtbewegung) UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 12 - Fazit: Angle-Axis Wir können aus jeder orthonormalen Matrix (also aus jeder Rotationsmatrix) einen Winkel und eine Achse extrahieren (und umgekehrt). Wir können zwischen 2 Orientierungen in dieser Darstellung interpolieren. Kein Gimbal Lock ! Problem: wir haben eine Orientierung (angle, axis) und drehen um eine weitere Achse und Winkel? UNIVERSITÄT KOBLENZ · LANDAU Lösung: wir verwenden die Algebra der Matrizen, z.B. zur Akkumulation von Transformationen etc. … viele Umrechnung von angle-axis nach Matrizen und zurück Wunsch: eigene Algebra für „4-Komponenten-Vektoren“ (Quaternionen), so dass wir direkt in dieser Darstellung rechnen können… Damit könnten wir statt mit 3x3 Matrizen mit angle-axis (4 Komponenten) direkt rechnen. S. Müller - 13 - Quaternionen UNIVERSITÄT KOBLENZ · LANDAU The beauty of quaternions… Ken Shoemake: „quaternions are a valuable supplement to 3D matrices“ Jeder, der sich mit Rotationsmatrizen auskennt, kann Quaternionen lernen. Es gibt unterschiedliche Möglichkeiten, Quaternionen zu motivieren oder zu erklären (z.B. Kap. 10 in Eberly, Game Physics). Die geometrische Interpretation haben wir ausführlich kennengelernt. Jede Rotation/Orientierung lässt sich darstellen durch einen Winkel (Skalar) und eine Achse (Vektor) in Form eines „Vier-Vektors“ (Quaternion). , nx , ny , nz UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 15 - Quaternionen Sie liefern zusätzlich eine eigene Algebra, so dass wir wichtige Operationen mit Quaternionen direkt und effizient durchführen können (z.B, Rotationen akkumulieren). Minimalverständnis, das jeder haben sollte: eine Klasse (Implementierung), die alles erledigt Vorteil: effizienter, als Rotationsmatrizen Vorteil: Interpolation gut möglich UNIVERSITÄT KOBLENZ · LANDAU Wichtigste Operationen From Rotation Matrix … To Rotation Matrix … From Axis-Angle To Axis-Angle Multiplikation zweier Quaternionen (Akkumulation von Rotationen) Umformung eines Vektors in ein Quaternion Multiplikation eines Vektors mit einem Quaternion … S. Müller - 16 - Die wichtigsten Schritte Ein Quaternion schreibt man allgemein x q w, x, y, z bzw. q w, v mit v y z Gegeben ist eine Rotation um die (normierte) Achse n um den Winkel . Als Quaternion: q cos 2, sin 2 n , n q cos 2, sin 2 nx , sin 2 n y , sin 2 nz bzw. UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 17 - From/To Angle Axis q cos 2, sin 2 n Zur Erinnerung x nx x 1 1 n y y y 2 1 w n sin 2 z z z From Angle Axis: w cos 2 x nx y sin 2 n y z n z 2 arccosw To Angle Axis Falls |w|=1 bzw. =0 ist die Achse nicht definiert, bzw. kann jede beliebige Achse genommen werden. Man beachte, da n ein normierter Vektor ist, gilt: w2 x 2 y 2 z 2 UNIVERSITÄT KOBLENZ · LANDAU cos 2 2 sin 2 2 x 2 y 2 z 2 cos 2 2 sin 2 2 1 S. Müller - 18 - Algebra Ein Quaternion wird dargestellt als eine Erweiterung der komplexen Zahlen q w x i y j z k … wobei w, x, y, z reelle Zahlen sind. Quaternionen zur Darstellung von Rotationen sind „EinheitsQuaternionen“ mit Länge 1: w2 x 2 y 2 z 2 1 Die Symbole i, j und k entsprechen den imaginären Zahlen mit i 2 j2 k 2 1 Zusätzlich haben sie Eigenschaften, die an das Kreuzprodukt erinnern: ij ji k jk kj i ki ik j Allerdings ist die Multiplikation assoziativ ijk 1 i jk (hier unterscheiden sie sich vom Kreuzpodukt) UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 19 - Addition und Multiplikation Addition q0 q1 w0 x0 i y0 j z0 k w1 x1 i y1 j z1 k Skalierung s q s w x i y j z k sw sx i sy j sz k w0 w1 x0 x1 i y0 y1 j z0 z1 k Multiplikation q0 q1 w0 x0 i y0 j z0 k w1 x1 i y1 j z1 k w0 w1 x0 x1 y0 y1 z0 z1 w0 x1 w1 x0 y0 z1 z0 y1 i w0 y1 w1 y0 z0 x1 x0 z1 j w0Rz1SI Tw1ÄzT0 U N IV E KOBLENZ · LANDAU x0 y1 y0 x1 k S. Müller - 20 - Hilfsfolie zur Lessontalkfrage: Die richtige Repräsentation? q0 q1 w0 x0 i y0 j z0 k w1 x1 i y1 j z1 k w0 w1 x0 x1 y0 y1 z0 z1 w0 x1 w1 x0 y0 z1 z0 y1 i w0 y1 w1 y0 z0 x1 x0 z1 j w0 z1 w1 z0 x0 y1 y0 x1 k q0 q1 w0 , v0 w1 , v1 UNIVERSITÄT KOBLENZ · LANDAU w0 w1 , v0 v1 w0 w1 , w0v1 w1v0 v0 v1 w0 w1 v0 v1 , w0v1 w1v0 v0 v1 S. Müller - 21 - Multiplikation Analoge Schreibweise q0 q1 w0 x0 i y0 j z0 k w1 x1 i y1 j z1 k w0 w1 x0 x1 y0 y1 z0 z1 w0 x1 w1 x0 y0 z1 z0 y1 i w0 y1 w1 y0 z0 x1 x0 z1 j w0 z1 w1 z0 x0 y1 y0 x1 k q0 q1 w0 , v0 w1 , v1 w0 w1 v0 v1 , w0v1 w1v0 v0 v1 UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 22 - Zwischenbemerkung Das wichtigste, das wir gesucht hatten, haben wir gefunden: die Hintereinanderausführung von Rotationen. Bsp.: Ein Objekt wird zuerst um die Achse n1 um den Winkel 1 gedreht, dann um die Achse n2 um den Winkel 2. Wie sieht die Gesamttransformation aus? UNIVERSITÄT KOBLENZ · LANDAU 1 , n1 2 , n2 Lösung über Quaternionen q1 cos1 2, sin 1 2 n1 q2 cos2 2, sin 2 2 n2 Umrechnung in Quaternionen Multiplikation der Quaternionen liefert die Lösung q q2 q1 S. Müller - 23 - Zur Vollständigkeit… q w , v Analoge Schreibweisen für das Quaternion q w x i y j z k q w vˆ mit vˆ x i y j z k Konjugierte q* w vˆ w x i y j z k , bzw. q* ( w,v ) Norm 2 q q q* w2 x 2 y 2 z 2 UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 24 - Anwendung auf Vektoren I Umformung eines Vektors in ein Quaternion Wir machen aus Vektoren „pure“ Quaternionen Gegeben ist ein bel. Vektor Als Quaternion: r 3 r 0, r Intuitiv: einen Vektor können wir als Quaternion mit Skalarteil gleich Null interpretieren. Neu daran ist, dass Vektoren auch als Rotation dargestellt werden können; bei Matrizen ist das nicht so intuitiv… UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 25 - Anwendung auf Vektoren II A Zuerst wird der Vektor in ein Quaternion umgewandelt. r 0, r r' Die Anwendung einer Rotation geschieht mit Hilfe folgender Transformation (Ähnlichkeits-transformation): r' q r q * n y x r O Das Resultat ist wieder ein r' M r „pures“ Quaternion mit w=0. Wobei M die zur Axis-Angle Der Vektorteil enthält die Darstellung gehörige Matrix Richtung r‘ des gedrehten ist. Vektors. /* tatsächlich wird in vielen Implementierungen (u.a. Eberly) so UNIVERSITÄT KOBLENZ · LANDAU Analog zur Matrixdarstellung vorgegangen, dass an dieser Stelle das Quaternion in eine Matrix umgerechnet wird und der Vektor entsprechend multipliziert wird. Die kostet zwar mehr Speicherplatz, spart aber Performanz gegenüber qrq* */ S. Müller - 26 - Nachtrag Die Akkumulation von Rotationen/Quaternionen geschieht durch q q2 q1 Auf einen Vektor (pures Quaternion) wird eine Rotation/Quaternion angewendet durch r' q r q * Zu zeigen ist, dass die Hintereinanderausführung der Rotationen durch die Multiplikation der Quaternionen erreicht wird: r ' q r q* q2 q1 r q1* q2* Multiplikation assoziativ Eigenschaft des Konjungierten UNIVERSITÄT KOBLENZ · LANDAU q2 q1 r q1* q2* q2 q1 r q2 q1 * S. Müller - 27 - Löst das unser Problem? Durch Ausführen der Multiplikation eines Quaternions erhält man wieder den Drehtensor/Rodriguez-Formel. r' q r q * c, sn 0, r c, sn ... 2 0, E sin Dn (1 cos ) D n r c cos 2 s sin 2 Durchrechnen s. Übungsaufgaben, man braucht dazu: sin 2 sin 2 cos 2 2cs 1 cos 2 sin 2 2 2s 2 UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 28 - Beispiel Der Vektor r=(0,1,0)T wird zuerst um die z-Achse um 90° gedreht, dann um die y-Achse um 90°. Bestimme den Vektor r‘ nach der Transformation mit Hilfe von Quaternionen. y y y 90 r z x UNIVERSITÄT KOBLENZ · LANDAU z 90 x z x S. Müller - 29 - y r Beispiel q1 cos45, 0,0, sin 45 Bestimmung der Quaternionen q2 cos45, 0, sin 45,0 q q2 q1 z x y Multiplikation zur Gesamttransformation Umrechnung des Vektors in ein pures Quaternion r 0, r 0,0,1,0 Anwendung des puren Quaternions auf das Quaternion r' q r q * z y r' z Der gesuchte Vektor r‘ steckt dann im Vektorteil UNIVERSITÄT KOBLENZ · LANDAU 90 90 x x S. Müller - 30 - Beispielrechnung q1 cos45, 0,0, sin 45 q q2 q1 q2 cos45, 0, sin 45,0 (w2 w1 x2 x1 y2 y1 z2 z1 , w2 x1 w1 x2 y2 z1 z2 y1 , w2 y1 w1 y2 z2 x1 x2 z1 , w2 z1 w1 z2 x2 y1 y2 x1 ) w2 w1 , y2 z1 , w1 y2 , w2 z1 1 1, 1, 1, 1 2 r' q r q * 1 1 1, 1, 1, 1 0, 0, 1, 0 1, 1, 1, 1 2 2 1 1 1, 1, 1, 1 1, 1, 1, 1 2 2 1 0, 0, 0, 4 (0, 0, 0, 1) 4 UNIVERSITÄT KOBLENZ · LANDAU 0 r ' 0 1 S. Müller - 31 - From/To Matrix I Axis-Angle für (, nx, ny, nz) lieferte die Matrix: Für die Quaternion-Darstellung gilt (w, x, y, z), mit Mit Hilfe folgender trigonometrischer Operationen: kann man zeigen, dass 1 nx2 c nx2 1 c nx n y s nz 1 c n n s n x z y 1 c nx n y s nz 1 c nx nz s n y 1 n y2 c n y2 1 c n y nz s nx 1 c n y nz s nx 1 nz2 c nz2 w cos 2; x sin 2 nx ; 2 sin 2 2 1 cos y sin 2 n y ; z sin 2 nz sin 2 sin 2 cos 2 2wx 2 cos 2 sin 2nx s nx 2 xy 2 sin 2 2nx n y (1 cos )nx n y 1 2 y 2 2 z 2 1 2 sin 2 2n y2 nz2 1 1 c 1 nx2 1 nx2 c nx2 UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 32 - From/To Matrix II To Matrix r00 r10 r 20 r01 r11 r21 r02 1 2 y 2 2 z 2 2 xy 2wz 2 xz 2wy 2 2 r12 2 xy 2wz 1 2 x 2 z 2 yz 2wx r22 2 xz 2wy 2 yz 2wx 1 2 x 2 2 y 2 From Matrix r00 r11 r22 3 4 x 2 4 y 2 4 z 2 3 4x 2 y 2 z 2 3 41 w2 3 4 4w2 4w2 1 1 w r00 r11 r22 1 2 UNIVERSITÄT KOBLENZ · LANDAU w 0: r21 r12 4w r r y 02 20 4w r r z 10 01 4w x w 0: s. nächste Folien S. Müller - 33 - Nachtrag: From Matrix Sonderfälle r00 r10 r 20 w=0 r11 r21 r02 1 2 y 2 z 2 2 xy 2 xz 2 2 r12 2 xy 1 2x z 2 yz r22 2 xz 2 yz 1 2x 2 y 2 2 x 2 1 2 xy 2 xz 2 2 y 1 2 yz 2 xy 2 2 xz yz z 2 2 1 Einsetzen von w=0 in die Matrix liefert eine Reflexionsmatrix (s. 04 Folie 38) In diesem Fall: x r01 Analog: 1 r00 1 2 y 1 r11 1 2 z 1 r22 1 2 w cos 2 0, bzw. UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 34 - Nachtrag: From Matrix Sonderfälle II Fazit: eine Reflexionsmatrix ist für die Umrechnung in ein Quaternion ein Problem, da dann w=0 gilt und die Achse per Sonderfall bestimmt werden muss. Frage: was ist dann mit dem Sonderfall der Einheitsmatrix? r00 r10 r 20 r01 r11 r21 r02 1 0 0 r12 0 1 0 r22 0 0 1 w 1 r00 r11 r22 1 1 2 x y z0 Dieser Fall ist also kein Sonderfall, verdient aber eine besondere Beachtung, da die Einheitsmatrix in dem Quaternion resultiert : q 1, 0,0,0 1, 0 UNIVERSITÄT KOBLENZ · LANDAU S. Müller - 35 - Fazit: Quaternionen Sie liefern zusätzlich eine eigene Algebra, so dass wir wichtige Operationen mit Quaternionen direkt und effizient durchführen können (z.B, Rotationen akkumulieren). Minimalverständnis, das jeder haben sollte: eine Klasse (Implementierung), die alles erledigt Vorteil: effizienter, als Rotationsmatrizen Vorteil: Interpolation gut möglich UNIVERSITÄT KOBLENZ · LANDAU Wichtigste Operationen From Rotation Matrix … To Rotation Matrix … From Axis-Angle To Axis-Angle Multiplikation zweier Quaternionen (Akkumulation von Rotationen) /* Umformung eines Vektors in ein Quaternion Multiplikation eines Vektors mit einem Quaternion */ … S. Müller - 36 - Fazit: Orientierung 9 Werte, schwer zu interpolieren 3 Werte, Gimbal Lock Rotationsmatrix Euler/KardanWinkel lassen sich leicht hin/herrechnen Angle-Axis 4 Werte, keine Singularitäten UNIVERSITÄT KOBLENZ · LANDAU Quaternionen 4 Werte, gut zu interpolieren S. Müller - 37 - func = teure Trigo-Funktionen, com = compare, trans = Transformation von n Vektoren, comp = Zusammensetzung mehrerer Rotationen (composition), interp = slerp = spherical linear interpolation (also nicht nur linear!) Quaternionen mem Rotationsmatrix Axis-Angle Quaternion 9 floats 6(4) floats 4 floats add mul div func add mul div func add mul div func trans 6n 9n - - 12n 18n - - 24n* 32n* - - comp 18 27 - - 52 64 1 2 12 16 interp 58 77 1 4 8 16 AA R R AA AA Q Q AA QR RQ nur Konvertierung add mul div func com 13 15 - 2 - 8 7 1 2 - 1 5 1 2 - - 4 - 2 - 12 12 - - - 6 5 1 1 1(3) UNIVERSITÄT KOBLENZ · LANDAU 1 4 Bewertung * bei Ausnutzung spezieller Rechenregeln auch 17n + 24n S. Müller - 38 -