Quaternionen Eugenia Schwamberger. Inhalt : Komplexe Zahlen Quaternionen Einheitsquaternionen...

Post on 05-Apr-2015

109 views 1 download

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