Quaternionen Eugenia Schwamberger. Inhalt : Komplexe Zahlen Quaternionen Einheitsquaternionen...
-
Upload
teresia-schmelzer -
Category
Documents
-
view
110 -
download
1
Transcript of Quaternionen Eugenia Schwamberger. Inhalt : Komplexe Zahlen Quaternionen Einheitsquaternionen...
Quaternionen
Eugenia Schwamberger
Inhalt :Komplexe ZahlenQuaternionenEinheitsquaternionen Rotation mit Quaternionen Beispiel
Matrix ConversionAnhang A: Körper, SchiefkörperAnhang B: Vektorprodukt, SkalarproduktLiteratur
Komplexe Zahlen
Definition Es sei C = R*R – das
kartesische Produkt. An Stelle des geordnetes Paar (x, y) schreiben wir x + iy C für x, y R.
Grafische Darstellung
Komplexe Zahlen 2
Addition (x + iy) + (u + iv) = (x + u) + i(y + v)
Multiplikation (x + iy) · (u + iv) = (xu – yv) + i(xv + yu)
Kommutativer Körper mit 1 = 1 + i · 0 als Einselement der MultiplikationFür z = x + iy Betrag |z| = Konjugierte z* = x – iy
² ²y x
Quaternionen 1 Einführung
Erst beschrieben von W.R. Hamilton, im 1843Eingeführt im Feld von Computergrafik von Shoemake, im 1995Was sind Quaternionen?
Quaternionen 2Definition: Ein Quaternion q ist ein Quadrupel,
bestehend aus dem Skalar qw und dem Vektor qv
q = ( qv, qw )
= (qx, qy, qz, qw)
= i qx + j qy + k qz + qw
mit qx, qy, qz, qw R und
ij = k, ji = -k, jk = i, kj = -i, ki = j, ik = -j
Quaternionen 3
Der Vektor qv = (qx, qy, qz) heißt der imaginäre Teil und qw heißt der reelle Teil von Quaternion qFür imaginäre Teil
Addition Produkt Kreuzprodukt und
andere
Vektoren als Quaternionen v = (v, 0)
Skalare als Quaternionen s = (0, s)
Quaternionen 4
Multiplikation ist nicht kommutativQuaternionen bilden einen SchiefkörperMultiplikation von zwei Quaternionen
· i j k
i -1 k -j
j -k -1 i
k j -i -1
Quaternionen 5
Skalarprodukt s q = (o, s) (gv , qw) = (s gv , s qw) q s = (gv , qw) (0, s) = (gv s , qw s) = (s gv , s qw)
Kreuzprodukt qvxrv = (i qx + j qy + k qz)x(i rx + j ry + k rz) =
i (qyrz – qzry)
+ j (-qxrz + qzrx)
+ k (qxry - qyrx)
qxrx - qyry – qzrz =>
qvxrv= mv
Quaternionen 6
Multiplikationen von zwei Quaternionenq r = (i qx + j qy + k qz + qw )x(i rx + j ry + k rz + rw) =
i (qyrz – qzry + qxrw – qwrx)
+ j (-qxrz + qzrx + qyrw + qwry)
+ k (qxry – qyrx + qzrw – qwrz)
+ qwrw - qxrx - qyry – qzrz =
(qvxrv + rwqv + qwrv, qwrw – qvrv)
Quaternionen 7
Addition q + r = (qv, qw) + (rv, rw) =(qv + rv, qw + rw)
Konjugierte Quaternionen q* = (qv, qw)* = ( - qv, qw)
Der Norm N(q) bzw. ||q||² N(q) = q q* = q* q = qv qv + qw² =
qx² + qy² + qz² + qw²
Die Identität I = (0, 1)
Multiplikative Inverse
Behauptung Die zu einem Quaternion q multiplikative
Inverse ist q-1 = q*/N(q)
Wir leiten diese Formel von der Definition des Normen her.
q-1 · q = q · q-1 = 1 Gilt für Inverse
N(q) = q · q* 1 = (q · q* ) / N(q) => q-1 = q*/N(q)
Regeln
Für Konjugierte Quaternionen (q*)* = q (q + r)* = q* + r* (q r)* = r* q*
Für den Norm von Quaternionen N(q*) = N(q) N(q r) = N(q) N(r)
Gesetze für Multiplikationen
Distributivgesetze p (s q + t r) = s p q + t p r
wobei p, q, r sind Quaternionen, und s, t -
Skalaren (s p + t q) r = s p r + t q r
Assoziativität p (q r) = (p q) r
Einheitsquaternionen
Quaternionen mit N(q) = 1 heißen Einheitsquaternionen. q = (uq sin, cos)
für drei-dimensionalen Vektor uq mit N(uq) = 1, weil N(q) = n(uq sin, cos) = sin² (uq uq) + cos² =
sin² + cos² = 1
Die menge aller Einheitsquaternionen bildet eine Einheitssphäre im vierdimensionalen Raum.
Rotation mit QuaternionenSei gegeben Vektor P (px py pz pw)T
Wir bringen die Koordinaten von P in ein Quaternion p ein, p = (px, py, pz, pw).Angenommen, dass wir ein Einheitsquaternion q = (uq sin, cos) haben, dann gilt: qpq-1
rotiert p um die Achse uq
mit dem Winkel 2 Anmerkung Für Einheitsquaternion q gilt q* = q-1
Rotation mit Quaternionen 2
Gegeben sei zwei Vektoren v1 und v2
N(v1) = N(v2) = 1
cos = v1 · v2
uq = (v1xv2) / |v1xv2|
N(uq) = 1q = v2 · v1* = (v1xv2, v1 · v2)
q = (uq sin, cos )
Rotation mit Quaternionen 3
(q v1q*) liegt in der gleichen Ebene wie v1 und v2 und schließt mit v2 den Winkel ein.(q v1q*)v2* =
(q v1((v2v1)*)*)v2* =
q (v1v1)(v2*v2*) =
q = (v2 · v1* )
Rotation mit Quaternionen 4
Das Produkt qpq-1
führt p = (pv, pw) nach p‘ = (pv‘, pw‘) über,wobei N(pv) = N(pv‘) ist, (die Länge des Vektors hat sich nicht geändert)Liegt in der gleichen Ebene wie p Schließt mit dem p den Winkel 2
Beispiel Punkt P(0, 2, 6) soll um 60° bzg. der z-Achse rotiert werden.p = 0i + 2j + 6k,q = (uqsin, cos), uq= (0, 0, -1), = 30° =>q = (- 0.5k + cos30°) = (3/2 – 0.5k) = q* = (3 / 2 + 0.5k)
Berechne q p q*(3/2-0.5k)(2j + 6k)(3/2 + 0.5k) =(i + 3j + 3 3k + 0.5 · 6)(3/2 + 0.5k) = (3i + j +6k) =>
P‘ = (1.73 1 6)T
Matrix Conversion
Ein Quaternion q kann in eine Matrix Mq folgendermaßen konvertiert werden: 1-s(qy² +qz²) s(qxqy - qwqz) s(qxqz + qwqy) 0 Mq = s(qxqy + qwqz) 1-s(qx² +qz²) s(qyqz – qwqx) 0 s(qxqz - qwqy) s(qyqz + qwqx) 1-s(qx² +qy²) 0 0 0 0 1Wobei s= 2/N(q)
Matrix Conversion 2
Wenn N(q) =1, dann 1-2(qy² +qz²) 2(qxqy - qwqz) 2(qxqz + qwqy) 0 Mq = 2(qxqy + qwqz) 1-2(qx² +qz²) 2(qyqz – qwqx) 0 2(qxqz - qwqy) 2(qyqz + qwqx) 1 - 2(qx² +qy²) 0 0 0 0 1
Matrix Conversion 3
Rückwärtsumrechnung m21
q - m12q = 4qwqx
m02q - m20
q = 4qwqy (*) m10
q - m01q = 4qwqz
d.h. wenn qw bekannt ist, können wir die qx, qy, qz berechnen.
Matrix Conversion 4
„trace“ einer Matrix M - tr(M) tr(Mq) = 4- 2s(qx² +qy² +qz²) =4 ·(1- (qx² +qy² +qz²) /(qx² +qy² + qz² + qw²)) =
4qw² / (qx² +qy² + qz² + qw²) =
4qw² / N(q)
Matrix Conversion 5
Dieses Resultat liefert die folgende Umrechnung für Quaternionen: qw = 0.5 tr (Mq)
qx = (m21q - m12
q) / 4qw (**)
qy = (m02q - m20
q) / 4qw
qz = (m10q - m01
q) / 4qw
Matrix Conversion 6
Lösung ist nicht stabil, Division von kleinen Zahlen wird vermieden.Deshalb setzen wir zuerst t = qw² - qx² - qy² - qz² ein, daraus folgt
m00 = t + 2qx²
m11 = t + 2qy²
m22 = t + 2qz²
u = m00 + m11 + m22 = 2 + qw²
Matrix Conversion 7
Wir halten folgendes fest:4qx² = m00 - m11 - m22 + m33
4qy² = - m00 + m11 - m22 + m33
4qz² = - m00 - m11 + m22 + m33
4qw² = tr(Mq)
Sphärische Lineare Interpolation
Gegeben sei zwei Einheitsquaternionen q und r und ein Parameter t [0, 1]. Dann ist s (q, r, t) = (rq-1)tq = = slerp(q, r, t) = q sin((1 –t)) / sin + r sin(t) / sin mit cos = qxrx + qyry + qzrz + qwrw. Diese Funktion berechnet für t = [0, 1] die kürzeste Verbindung (Großkreis) auf der vierdimensionalen Einheitssphäre zwischen q und r.Dies ist für die Interpolation (Animation) von Orientierungen von Körpern ideal geeignet.Nicht sehr gut für die Orientierung der Kamera, da sich der „Camera-up“ Vektor verändern kann!
Transformation mit Quaternionen
VorteileDie Rotation erfolgt direkt um die gewünschte Drehachse.
Es kann mit dem Verfahren wie SLERP zwischen zwei Orientierungen interpoliert werden Die Verkettung von Rotationen ist effizienter.
NachteileMehr MathematikNicht sehr gut für Kameraorientierungen geeignet
Anhang A
Körper Sei (K, +, *) eine Menge mit zwei Verknüpfungen. K ist
ein Körper, wenn Assoziativgesetz der Multiplikation und der Addition gilt Kommutativgesetz der Multiplikation und der Addition
gilt Nullelement und Einselement existieren Inverse der Addition exsistiert Inverse der Multiplikation exsistiert
Schiefkörper Die Multiplikation ist nicht kommutativ
Anhang B
Vektorprodukt |vu| = |v|·|u| · sin(v, u) vu ist orthogonal zu v und u Bilden ein Rechtsystem in der
Reihenfolge : v, u, vu.
Skalarprodukt u · v = |v|·|u| · cos(v, u)
Literatur
Tomas Möller, Erik Haines. Real – Time Rendering. Alan Watt. 3D – Computergrafik. B.L. van der Waerden. Hamiltons Entdeckung der Quaternionen. Peter Meyer-Nieberg. Analysis I. Vorlesung SS2001