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   Dn  r
 
 
 
 E  n  n T  E  cos   E  cos   n  n T  sin   Dn  r
Einfügen der Einheitsmatrix:
 
 
 E  (1  cos  )n  n T  E   sin   Dn  r
Ausmultiplizieren:
Es gilt (ohne Beweis):
n  nT  E  r  n  n  r   Dn n  r   Dn Dn r  D2 n r


 
r '  E  sin   Dn   (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
 arccoscos 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 , n1 
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  arccosn2  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 , nt 



n1

d
q
2 , n2 

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 arccosw
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
ijk  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

w0Rz1SI Tw1ÄzT0 
U N IV 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 , v0  v1 
w0 w1 , w0v1  w1v0  v0  v1 
w0 w1  v0  v1 , w0v1  w1v0  v0  v1 
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 , n1 
2 , n2 
Lösung über Quaternionen

q1  cos1 2, sin 1 2  n1 

q2  cos2 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   Dn   (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  cos45, 0,0, sin 45
Bestimmung der Quaternionen
q2  cos45, 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  cos45, 0,0, sin 45
q  q2  q1
q2  cos45, 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  2nx  s nx
2 xy  2 sin 2  2nx n y  (1  cos  )nx n y
1  2 y 2  2 z 2  1  2 sin 2  2n 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  4x 2  y 2  z 2 
 3  41  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  2x  z 
2 yz

r22  
2 xz
2 yz
1  2x 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 z0
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
QR
RQ
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 -