Quaternion: Unterschied zwischen den Versionen
K (→Isometrien auf V: Fehler) |
K (Rechtschreibfehler) |
||
Zeile 2: | Zeile 2: | ||
=== Übersicht === | === Übersicht === | ||
− | Quaternionen bilden ein 4D-Zahlensystem ähnlich dem 2D-Zahlensystem der Komplexen Zahlen, jedoch sind sie bei der Multiplikation nicht kommutativ ( d.h. für | + | Quaternionen bilden ein 4D-Zahlensystem ähnlich dem 2D-Zahlensystem der Komplexen Zahlen, jedoch sind sie bei der Multiplikation nicht kommutativ ( d.h. für Quaternionen q1, q2 gilt nicht immer: q1*q2 = q2*q1 ). Sie werden häufig zur Darstellung und einfachen Berechnung von Isometrien (Drehungen) im 3D-Raum verwendet, wobei sie hier deutlich anschaulicher sind als unitäre Matrizen (Rotationsmatrizen). |
=== Definition === | === Definition === | ||
− | Ein Quaternion q hat folgende, eindeutige | + | Ein Quaternion q hat folgende, eindeutige Gestalt: |
q = a + b*i + c*j + d*k, | q = a + b*i + c*j + d*k, | ||
− | wobei a,b,c,d reele Zahlen darstellen und i,j,k Imaginäre Zahlen mit den Eigenschaften: | + | wobei a, b, c, d reele Zahlen darstellen und i, j, k Imaginäre Zahlen mit den Eigenschaften: |
i*i=j*j=k*k=-1 | i*i=j*j=k*k=-1 | ||
i*j = k = -j*i | i*j = k = -j*i | ||
j*k = i = -k*j | j*k = i = -k*j | ||
k*i = j = -i*k | k*i = j = -i*k | ||
− | Die Quaternionen H bilden also einen 4-Dimensionalen Raum in den Komponenten a,b,c,d. | + | Die Quaternionen H bilden also einen 4-Dimensionalen Raum in den Komponenten a, b, c, d. |
Man trennt dabei häufig den 3D-Raum der reinen Quaternionen V der Form v = b*i + c*j + d*k heraus. | Man trennt dabei häufig den 3D-Raum der reinen Quaternionen V der Form v = b*i + c*j + d*k heraus. | ||
Zeile 18: | Zeile 18: | ||
==== Addition ==== | ==== Addition ==== | ||
− | Die Addition zweier Quaternionen geschieht | + | Die Addition zweier Quaternionen geschieht komponentenweise, also: |
q = a + bi+ cj + dk | q = a + bi+ cj + dk | ||
r = e + fi+ gj + hk | r = e + fi+ gj + hk | ||
Zeile 24: | Zeile 24: | ||
==== Multiplikation ==== | ==== Multiplikation ==== | ||
− | Die Multiplikation zweier Quaternionen geschieht wie auf den reelen Zahlen gewohnt mit gedachten Variablen i,j,k, wobei die oben definierten Eigenschaften zum Einsatz kommen: | + | Die Multiplikation zweier Quaternionen geschieht wie auf den reelen Zahlen gewohnt mit gedachten Variablen i, j, k, wobei die oben definierten Eigenschaften zum Einsatz kommen: |
q*r = (a + bi+ cj + dk)*(e + fi+ gj + hk) = | q*r = (a + bi+ cj + dk)*(e + fi+ gj + hk) = | ||
= ae + afi + agj + ahk | = ae + afi + agj + ahk | ||
Zeile 34: | Zeile 34: | ||
+ (a * g - b * h + c * e + d * f)j | + (a * g - b * h + c * e + d * f)j | ||
+ (a * h + b * g - c * f + d * e)k | + (a * h + b * g - c * f + d * e)k | ||
− | Man beachte im | + | Man beachte im Allgemeinen: '''q*r <> r*q''' ! |
==== Konjugation ==== | ==== Konjugation ==== | ||
Die Konjugation ist definiert durch: | Die Konjugation ist definiert durch: | ||
konj(q) = a - bi - cj - dk, | konj(q) = a - bi - cj - dk, | ||
− | also | + | also die Inversion des Vorzeichens der Imaginären Anteile i, j, k. |
− | Es lässt sich leicht zeigen, | + | Es lässt sich leicht zeigen, dass gilt: |
konj(konj(q)) = q | konj(konj(q)) = q | ||
konj(q*p) = konj(p)* konj(q) | konj(q*p) = konj(p)* konj(q) | ||
Zeile 50: | Zeile 50: | ||
==== Inversion ==== | ==== Inversion ==== | ||
− | Mit den obigen Funktionen lässt sich sehr leicht ein Quaternion h zu q berechnen, so | + | Mit den obigen Funktionen lässt sich sehr leicht ein Quaternion h zu q berechnen, so dass gilt: h*q=q*h=1, denn: |
||q||^2 = q * konj(q) | ||q||^2 = q * konj(q) | ||
<=> | <=> | ||
Zeile 60: | Zeile 60: | ||
Und damit: | Und damit: | ||
1 = h * q. | 1 = h * q. | ||
− | h ist also das multiplikativ | + | h ist also das multiplikativ invers zu q: h = q^(-1) |
=== Injektion der Reelen und Komplexen Zahlen === | === Injektion der Reelen und Komplexen Zahlen === | ||
− | Die | + | Die reellen Zahlen lassen sich injektiv in die Quaternionen abbilden: |
x -> x + 0*i + 0*j + 0*k | x -> x + 0*i + 0*j + 0*k | ||
− | Entsprechend für die | + | Entsprechend für die komplexen Zahlen: |
x + y*i -> x+ y*i + 0*j + 0*k | x + y*i -> x+ y*i + 0*j + 0*k | ||
Die zugehörigen Rechenregeln bleiben dabei erhalten. | Die zugehörigen Rechenregeln bleiben dabei erhalten. | ||
Zeile 90: | Zeile 90: | ||
Phi(Q,.): V -> V | Phi(Q,.): V -> V | ||
x -> Phi(Q,x) := Phi(Q,Q,x) = Q*x*konj(Q) = Q*x*Q^-1, | x -> Phi(Q,x) := Phi(Q,Q,x) = Q*x*konj(Q) = Q*x*Q^-1, | ||
− | wobei offensichtlich Phi(-Q,.) = Phi(Q,.), | + | wobei offensichtlich Phi(-Q,.) = Phi(Q,.), Q und -Q beschreiben also die selbe Drehung. |
Und entsprechnd der Rechenregeln für Phi auf H (siehe oben) gilt mit einem Quaternion Q' mit ||Q'||=1: | Und entsprechnd der Rechenregeln für Phi auf H (siehe oben) gilt mit einem Quaternion Q' mit ||Q'||=1: | ||
Phi(Q, Phi(Q', x)) = Q*Q'*x*konj(Q')*konj(Q) = (Q*Q')*x*konj(Q*Q') = Phi(Q*Q',x) | Phi(Q, Phi(Q', x)) = Q*Q'*x*konj(Q')*konj(Q) = (Q*Q')*x*konj(Q*Q') = Phi(Q*Q',x) | ||
Zeile 96: | Zeile 96: | ||
Man kann Q sehr leicht zerlegen in: | Man kann Q sehr leicht zerlegen in: | ||
Q = cos(alpha) + sin(alpha)*P, 0<=alpha<=Pi, P aus V, ||P|| = 1, | Q = cos(alpha) + sin(alpha)*P, 0<=alpha<=Pi, P aus V, ||P|| = 1, | ||
− | wobei dann Phi(Q,x) eine Drehung von x (man beachte, | + | wobei dann Phi(Q,x) eine Drehung von x (man beachte, dass dabei x aus V ist) um den Winkel 2*alpha um die Achse P darstellt. |
Version vom 11. Oktober 2006, 17:58 Uhr
Inhaltsverzeichnis
Hamiltonsche Quaternionen
Übersicht
Quaternionen bilden ein 4D-Zahlensystem ähnlich dem 2D-Zahlensystem der Komplexen Zahlen, jedoch sind sie bei der Multiplikation nicht kommutativ ( d.h. für Quaternionen q1, q2 gilt nicht immer: q1*q2 = q2*q1 ). Sie werden häufig zur Darstellung und einfachen Berechnung von Isometrien (Drehungen) im 3D-Raum verwendet, wobei sie hier deutlich anschaulicher sind als unitäre Matrizen (Rotationsmatrizen).
Definition
Ein Quaternion q hat folgende, eindeutige Gestalt:
q = a + b*i + c*j + d*k,
wobei a, b, c, d reele Zahlen darstellen und i, j, k Imaginäre Zahlen mit den Eigenschaften:
i*i=j*j=k*k=-1 i*j = k = -j*i j*k = i = -k*j k*i = j = -i*k
Die Quaternionen H bilden also einen 4-Dimensionalen Raum in den Komponenten a, b, c, d. Man trennt dabei häufig den 3D-Raum der reinen Quaternionen V der Form v = b*i + c*j + d*k heraus.
Grundlegende Arithmetik
Addition
Die Addition zweier Quaternionen geschieht komponentenweise, also:
q = a + bi+ cj + dk r = e + fi+ gj + hk q + r = (a + e) + (b + f)i + (c + g)j + (d + h)k
Multiplikation
Die Multiplikation zweier Quaternionen geschieht wie auf den reelen Zahlen gewohnt mit gedachten Variablen i, j, k, wobei die oben definierten Eigenschaften zum Einsatz kommen:
q*r = (a + bi+ cj + dk)*(e + fi+ gj + hk) = = ae + afi + agj + ahk + bie + bifi + bigj + bihk + cje + cjfi + cjgj + cjhk + dke + dkfi + dkgj + dkhk = (a * e - b * f - c * g - d * h) + (a * f + b * e + c * h - d * g)i + (a * g - b * h + c * e + d * f)j + (a * h + b * g - c * f + d * e)k
Man beachte im Allgemeinen: q*r <> r*q !
Konjugation
Die Konjugation ist definiert durch:
konj(q) = a - bi - cj - dk,
also die Inversion des Vorzeichens der Imaginären Anteile i, j, k. Es lässt sich leicht zeigen, dass gilt:
konj(konj(q)) = q konj(q*p) = konj(p)* konj(q) konj(q + p) = konj(q) + konj(p)
Norm / Betrag
Die Norm ||q|| eines Quaternions Q ist definiert als:
||q|| = Sqrt(a*a + b*b + c*c + d*d) = Sqrt(q*konj(q))
Inversion
Mit den obigen Funktionen lässt sich sehr leicht ein Quaternion h zu q berechnen, so dass gilt: h*q=q*h=1, denn:
||q||^2 = q * konj(q) <=> 1 = (q * konj(q)) / ||q||^2 h := konj(q) / ||q||^2 => 1 = q * h
Und weil offensichtlich ||q|| = ||konj(q)|| gilt, folgt
||q||^2 = ||konj(q)||^2 = konj(q)*konj(konj(q)) = konj(q)*q
Und damit:
1 = h * q.
h ist also das multiplikativ invers zu q: h = q^(-1)
Injektion der Reelen und Komplexen Zahlen
Die reellen Zahlen lassen sich injektiv in die Quaternionen abbilden:
x -> x + 0*i + 0*j + 0*k
Entsprechend für die komplexen Zahlen:
x + y*i -> x+ y*i + 0*j + 0*k
Die zugehörigen Rechenregeln bleiben dabei erhalten.
Isometrien auf Quaternionen
Isometrien auf H
Die Isometrien der Quaternionen auf sich selbst (also die Isometrien des 4D-Raumes) lassen sich in Quaternionen beschreiben durch zwei Quaternionen P,Q, mit ||P||=||Q|| = 1 und den Abbildungen
Phi(P,Q,.): H -> H, x -> Phi(P,Q,x) := P*x*konj(Q) = P*x*(Q^(-1))
Psi(P,Q,.): H -> H x -> Psi(P,Q,x) := P*konj(x)*konj(Q) = P*konj(x)*(Q^(-1))
Dabei gilt für Quaternionen P',Q' mit ||P'||=||Q'||=1:
Phi(P,Q,Phi(P',Q',.)) = Phi(P*P',Q*Q',.) Phi(P,Q,Psi(P',Q',.)) = Psi(P*P',Q*Q',.)
Psi(P,Q,Psi(P',Q',.)) = Phi(P*Q',Q*P',.) Psi(P,Q,Phi(P',Q',.)) = Psi(P*Q',Q*P',.),
was man ohne weiteres ausrechnen kann.
Isometrien auf V
Der Fall der Isometrien auf den reinen Quaternionen V (siehe Definition) ist der für die 3D Grafik interessante Fall. Sie stellen die Rotationen auf V dar und das in einer besonders leicht lesbaren Form. Sei also Q eine Quaternion der Norm 1, dann gehört dazu eine Isometrie auf V:
Phi(Q,.): V -> V x -> Phi(Q,x) := Phi(Q,Q,x) = Q*x*konj(Q) = Q*x*Q^-1,
wobei offensichtlich Phi(-Q,.) = Phi(Q,.), Q und -Q beschreiben also die selbe Drehung. Und entsprechnd der Rechenregeln für Phi auf H (siehe oben) gilt mit einem Quaternion Q' mit ||Q'||=1:
Phi(Q, Phi(Q', x)) = Q*Q'*x*konj(Q')*konj(Q) = (Q*Q')*x*konj(Q*Q') = Phi(Q*Q',x)
Man kann Q sehr leicht zerlegen in:
Q = cos(alpha) + sin(alpha)*P, 0<=alpha<=Pi, P aus V, ||P|| = 1,
wobei dann Phi(Q,x) eine Drehung von x (man beachte, dass dabei x aus V ist) um den Winkel 2*alpha um die Achse P darstellt.