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?