Rotation mit Quanternion
-
Hi!
Vorerst, von komplexen Zahlen habe ich absolut keinen Schimmer.Habe beim googlen folgendes gefunden:
glRotatef α, x, y, z
q = (a, b, c, d)
a = cos(α/2)
b = xsin(α/2)
c = ysin(α/2)
d = z*sin(α/2)Wobei man ein Quanternion auch als Matrix darstellen kann:
| a b -d -c | | -b a -c d | | d c a b | | c -d -b a |
Als erstes wollte ich fragen, wenn ich einen 4 Komponenten Vektor mit w=1.0 mit dieser Matrix multipliziere, ob dieser gedreht wird.
Weiter möchte ich mit Pitch, Yaw und Roll arbeiten:
glRotatef α, 1.0, 0.0, 0.0
glRotatef β, 0.0, 1.0, 0.0
glRotatef γ, 0.0, 0.0, 1.0In OpenGL werden diese 3 resultierenden Matrizen miteinander multipliziert, und alle eingehenden Vektoren mit der berchneten Matrix multipliziert, so das er um den Koordinaten-Ursprung um Pitch=α, Yaw=β, Roll=γ gedreht wird. Kann jedoch zu diesen Gimpal-Look kommen, wo sie zwei Rotationen aufheben.
Nun wollte ich fragen, ob man dies auch mit den Quanternion-Matrizen machen kann und dies zu selben Erfolg führt.
mfg olli
-
Das sollte kein Problem sein, die Rotationsmatrizen durch Quaternionen darzustellen und diese dann miteinander zu kombinieren. Vielleicht bringt dir der Link hier was: http://www.j3d.org/matrix_faq/matrfaq_latest.html