8 votos

Usando cuaterniones en lugar de 4x4 matrices de transformaciones

Estoy interesado en implementar una solución limpia proporcionar una alternativa a los 4x4 matrices para la transformación 3D. Cuaterniones proporcionar el equivalente de la rotación, pero no la traducción. Por lo tanto, además de una Cuádrupla, usted necesita un adicional de vector de traducciones $(t_x,t_y,t_z)$. Siempre he visto afirmó que se necesitan 12 valores para la representación de la matriz, y sólo 7 de los cuaterniones basado en la representación.

Lo que no entiendo es cómo manipular los valores de traducción.

Para la rotación de un quaternion, no hay problema.

Para un vector $v$, un eje vector de $x$, y un ángulo de $a$: $$q = \cos\left(\frac{a}{2}\right) + x \cdot \sin\left(\frac{a}{2}\right)$$ Para rotar el vector: $$v' = qvq^{-1}$$ Para rotaciones múltiples, puede aplicar las transformaciones de los cuaterniones, y sólo cuando se tiene el final de la rotación ¿se debe aplicar a los datos. Esta es la razón por la matriz de transformación es tan bonito en 3d los gráficos de los sistemas.

Ok, así que ahora si la traducción entra en ella, ¿qué puedo hacer?

Dado un vector de transformación es: $$T = (t_x,t_y,t_z)$$ $$v' = qvq^{-1} + T$$ Si quiero aplicar una rotación y traslación de la operación de este, yo tendría que modificar $T$$q$. Lo que debería ser el resultado?

6voto

Drealmer Puntos 2284

Para aplicar una rotación posterior correspondiente a $q_1$ y la traducción correspondiente a $T_1$ a de su $v'$, que acababa de hacerlo en términos de álgebra de cuaterniones: te gustaría conseguir

$v''=q_1v'q_1^{-1}+T_1=q_1(qvq^{-1}+T)q_1^{-1}+T_1=(q_1q)v(q_1q)^{-1}+q_1Tq_1^{-1}+T_1$

Por lo tanto, como usted dice, es posible hacer los cálculos sobre las transformaciones de forma acumulativa, y , a continuación, aplicar a los datos, para evitar acumulativa de distorsión en los datos.

(editado para corregir original errata en la fórmula)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X