2009-11-18 25 views
20

Estoy trabajando en Ogre, pero es un problema general de cuaternión.'Diferencia' entre dos cuaterniones

Tengo un objeto, al que aplico inicialmente una rotación quaternion Q1. Más tarde, quiero hacerlo como si inicialmente roté el objeto por un cuaternión diferente Q2.

¿Cómo calculo el cuaternión que tomará el objeto, ya rotado por Q1, y lo alineo como si todo lo que hice fue aplicar Q2 a la orientación inicial/por defecto? Estaba mirando (s) lerping, pero no estoy seguro si esto solo es válido en orientaciones en lugar de rotaciones?

+3

¿qué le parece marcar algunas respuestas como correctas? también miran el desbordamiento de las matemáticas ... (Quaterions me vuelve completamente loco también por cierto y sry no puedo responder) –

Respuesta

29

Parece que quiere la inversa de Q1 veces Q2. Al transformarse por el inverso de Q1, el objeto volverá a su marco original (la orientación inicial, como dices), y luego la transformación por Q2 lo rotará a su nueva orientación.

Tenga en cuenta que la definición estándar de un cuaternión aplica transformaciones en una orden de multiplicación de derecha a izquierda, por lo que querrá calcular esto como Q = Q2 * Q1^{- 1}.

21

creo que de esta manera

QInitial * QTransition = QFinal 

resolver QTransition multiplicando ambos lados por QInitial^{- 1} (^ {- 1} siendo el conjugado cuaternión)

QTransition = QFinal * QInitial^{-1} 

Es sólo así de fácil.

  • note to @Dan Park - si no está de acuerdo con mis cálculos, publique una respuesta a mi respuesta, no modifique los cálculos. Por lo que yo sé, es correcto.
+0

Esto está reviviendo un viejo tema, pero ¿por qué es así? Puedo verificar que es por código, pero la rotación de la matriz funciona al revés, creo. P.ej. Si quisiera eliminar la Minitia, multiplicaría ambos lados con MInitial^-1 desde la izquierda desde MInitial^-1 * MInitial = Midentity. –

+1

Quaternions "multiplicación" no es hacia atrás como Multiplicación de matriz. No puedo encontrar una explicación sólida en la web, pero sé que está en "Quaternions and Rotation Sequences", de Kuipers. (http://www.amazon.com/Quaternions-Rotation-Sequences-Applications-Aerospace/dp/0691102988) - No digo que deba comprar ese libro para demostrarlo a usted mismo (a pesar de que es un buen libro), pero ahí es donde recuerdo haber aprendido sobre la diferencia entre las órdenes de operación de Matrix y Quaternion. – fbl

+0

Gracias por responder. Si me vuelvo a atascar alguna vez, iré a comprar este libro, pero por ahora estoy contento de que funcione. :) –