2010-02-04 25 views
7

Las matrices y los ángulos de Euler pueden sufrir un bloqueo de Gimbal pero, ¿cuáles son algunos otros argumentos para usar uno sobre el otro?¿Cuáles son los pros y los contras del uso de Matrices, Euler Angles y/o Quaternions para la representación de rotación?

¿Qué opinas DirectX favorece?

¿Qué se usa en C++ programación diaria/C/DirectX?

+0

no relacionada con la programación –

+0

Jestro: leyendo aquí: http://en.wikipedia.org/wiki/Gimbal_lock parece que el veredicto es usar cuaterniones .Pero no tengo experiencia directa (juego de palabras). –

+2

@Mitch: Sin duda, esto está relacionado con la programación, cualquiera que trabaje con gráficos en 3D lidia con estas cosas a diario –

Respuesta

12

Los ángulos de Euler solo requieren tres parámetros, en lugar de almacenar una matriz (o tres, pero eso suena excesivo). Sin embargo, cuando aplica la rotación de Euler, posiblemente terminará con algo equivalente a tres multiplicaciones de matriz para crear la transformación. Si solo estuviera usando una matriz, es posible que no incurra en un costo tan caro (dependiendo de cómo se haya construido la matriz). Además de Gimbal Lock, también hay un problema con los efectos de cancelación cuando se interpolan representaciones matriciales de rotaciones sobre las que hay que tener cuidado.

Es posible que desee considerar cuaterniones. Requieren cuatro parámetros de almacenamiento, por lo que no son muy pesados. Evitan el bloqueo de Gimbal y se pueden interpolar para realizar rotaciones suaves. Una cosa que se puede interpretar como un inconveniente para el cuaternión es que puede que no sean muy intuitivos para algunos. Las transformaciones de matriz y los ángulos de Euler tienen un tipo de nutación de balanceo-inclinación o giro-precesión que es bastante intuitiva. Los cuaterniones se asemejan más a una sola rotación sobre algunos ejes de resultados finales que sobresalen de esta o aquella manera.

Es probable que haya casos en los que alguien prefiera un método sobre los demás, por lo que estos son solo algunos puntos a tener en cuenta al tomar una decisión.

+1

+1. la interpolación y la solución del bloqueo cardánico es por lo que preferiría los cuaterniones. Pero el hecho de que la mayoría de la gente parezca usar Matrices tiene sus propias ventajas. –

+0

Creo que debe tenerse en cuenta que las Matrices no pueden entrar en Gimbal Lock (almacenan direcciones, no rotaciones). – Cygon

0

No está realmente relacionado con directx. Puede usar cualquier método, pero podría decirse que los cuaterniones son más fáciles de manejar para los datos de animación. De lo contrario, no tiene una única forma estándar para manejarlo y, por lo tanto, dificulta la interpretación de los datos entre los programas.

0

Los cuaterniones son, con mucho, los más difíciles de dominar, pero una vez que comprenda de qué se trata, los encontrará sorprendentemente fáciles de usar. Considero que son una mejor solución que luego Euler Angles/Matrix se transforma porque se enfrentan a un problema que las otras 2 soluciones no tienen. El "bloqueo de Gimball".

+0

Otra publicación que menciona "Gimbal Lock" como la propiedad redentora de Quaternions. Esto es solo un problema con los ángulos de Euler, ni las matrices ni los cuaterniones son susceptibles. – Cygon

4

ángulos de Euler sufren de singularidades y son difíciles de trabajar. Las representaciones de matriz NO tienen ese problema al contrario de una cantidad de respuestas aquí. Una representación matricial de orientación puede sufrir errores acumulados porque está utilizando 9 números para algo que solo tiene 3 grados de libertad. Los cuaterniones son muy interesantes matemáticamente, pero al final del día realmente están haciendo una multiplicación de matriz 4x4.

Un quaternion también se puede ver como un 3vec que representa un eje de rotación y su longitud está relacionada con el ángulo de rotación alrededor de ese eje (sin cuadrado?). El 4 ° parámetro se calcula para hacer que la longitud del 4vec sea igual a 1. Esta interpretación se puede convertir a una matriz de orientación equivalente.

La representación de matriz puede incluir información de escala, y puede extenderse a 4x4 para incluir información de posición así como orientación. Puede transformar ambos vectores de posición y dirección utilizando la transformación de matriz que no es posible con los otros dos.

Usted puede hacer una increíble cantidad de cosas de manera muy sencilla con una matriz de 4x4. Los ángulos de Quaternions y Euler solo hacen orientación. Sí, solo esa única cosa. Supongo que mi preferencia/parcialidad en este tema es bastante clara :-)

+0

En general, prefiero las transformaciones afines, también. Pero si estuviera animando algo, probablemente iría por la ruta del cuaternión por razones de interpolación. Para la composición de gráficos de escena, las transformaciones afines suenan como la mejor opción. Si alguien estaba escribiendo una herramienta de rotación para un modelador o algo así, los ángulos de Euler podrían parecer más naturales. –

Cuestiones relacionadas