Quaternionen berechnen

04/11/2008 - 22:17 von Manuel Draeger | Report spam
Hallo!

Gegeben ist ein Richtungsvektor Z=(0,0,1) und ein Richtungsvektor
W=(i|j|k). Gesucht ist ein Quaternion Q=(q1,q2,q3,q4) welches die
Rotation beschreibt um von Vektor Z zu Vektor W zu kommen. Das ganze
habe ich so begonnen:

1. Berechnung der Rotationsachse:
Die Rotationsachse ist die Achse die Senkrecht zur Ebene steht,
welche der Vektor z und Vektor w aufspannt und làsst sich wie folgt
als Richtungsvektor darstellen bzw. berechnen:

(0) (i) (0*l - 1*j) (-j)
N = ZxW N = (0) x (j) = (1*i - 0*k) = ( i)
(1) (k) (0*j - 0*i) ( 0)


2. Berechnung des Drehwinkels:
Der Drehwinkel Alpha entspricht dem Schnittwinkel von Vektor Z und
Vektor W und làsst sich wie folgt berechnen:

|Z x W|
cos(Alpha) = = k => Alpha = cos^-1(k)
|Z|*|W|

3. Berechnungen eines Quaternionen:
Wenn ich das bisherige nun einsetze bekomme ich folgendes
Quaternionen:

(cos(Alpha/2)) (cos(Alpha/2))
(Nx * sin(Alpha/2) (-j * sin(Alpha/2))
Q = (Ny * sin(Alpha/2) = ( i * sin(Alpha/2))
(Nz * sin(Alpha/2) (0)

Nun zu meinen Fragen:

1. Kann die Berechnung jemand nachvollziehen und sie ggf. bestàtigen?
2. Der 4. Wert des berechneten Quaternionen ist egal welche Werte W
annimmt konstant 0, was mich doch etwas irritiert.
3. Irgendwo scheint da noch ein Bug zu sein, denn es gibt Fàlle wo ich
auch um die Z-Achse drehen müsste...


mfg
Manuel
 

Lesen sie die antworten

#1 Jan Fricke
05/11/2008 - 11:22 | Warnen spam
Manuel Draeger wrote:
Hallo!

Gegeben ist ein Richtungsvektor Z=(0,0,1) und ein Richtungsvektor
W=(i|j|k). Gesucht ist ein Quaternion Q=(q1,q2,q3,q4) welches die
Rotation beschreibt um von Vektor Z zu Vektor W zu kommen.


Damit ist die Rotation nicht eindeutig beschrieben. (Jeder Vektor, der
auf der Mittelebene von Z und W liegt, ist Rotationsachse einer Drehung,
die Z in W überführt.)

Viele Grüße Jan

Ähnliche fragen