42 votos

¿Usos de los cuaterniones en el mundo real?

Recientemente he empezado a leer sobre los cuaterniones, y sigo leyendo que, por ejemplo, se utilizan en los gráficos por ordenador y en los cálculos de mecánica para calcular el movimiento y la rotación, pero sin explicaciones reales sobre las ventajas de utilizarlos.

Me pregunto qué se puede hacer exactamente con los cuaterniones que no se pueda hacer tan fácilmente (o más fácilmente) utilizando enfoques más tradicionales, como con los vectores.

29voto

Greg Hurlman Puntos 10944

Creo que también se utilizan en la física cuántica, porque la rotación con cuaterniones modela los espinores extremadamente bien (debido a la encantadora propiedad de que necesitas rotar un punto en el espacio cuaterniónico alrededor de 2 revoluciones completas para volver al "original", que es exactamente lo que ocurre con las partículas de espín-1/2).

También, como has dicho, se utilizan mucho en infografía por varias razones:

  1. son mucho más eficientes en cuanto a espacio para almacenar que las matrices de rotación (4 flotadores en lugar de 16)
  2. Son mucho más fáciles de interpolar que las rotaciones de ángulos de euler (interpolación esférica o interpolación de línea normalizada)
  3. Evitan el bloqueo del cardán
  4. Es mucho más fresco decir que su rotación se describe como "un gran círculo en la superficie de una hiperesfera unitaria de 4 dimensiones" :)

Creo que hay otros usos, pero muchos de ellos han sido sustituidos por Vectores más generales.

19voto

Jason Pratt Puntos 4782

Para entender las ventajas del uso de cuaterniones hay que considerar diferentes formas de representar las rotaciones.

A continuación, algunas formas con un resumen de los pros y los contras:

  • Ángulos de Euler
  • Matrices de rotación
  • Ángulo del eje
  • Cuaterniones
  • Rotores (espinores normalizados)

Los ángulos de Euler son la mejor opción si quiere que el usuario especifique una orientación de forma intuitiva. Además, ocupan poco espacio (tres números). Sin embargo, es más difícil interpolar linealmente los valores. Considere el caso de que quiera interpolar entre 359 y 0 grados. Interpolar linealmente causaría una gran rotación, aunque las dos orientaciones sean casi iguales. Escribir la interpolación del camino más corto, es fácil para un eje, pero no es trivial cuando se consideran los tres ángulos de Euler(por ejemplo el camino más corto entre (240, 57, 145) y (35, -233, -270) no es inmediatamente claro).

Las matrices de rotación especifican un nuevo marco de referencia utilizando tres vectores normalizados y ortogonales (Derecha, Arriba, Afuera, que al multiplicarse se convierten en las nuevas x, y, z). Las matrices de rotación son útiles para operaciones como el strafing (movimiento lateral), que sólo requiere trasladarse a lo largo del vector Derecho de la matriz de rotación de la cámara. Sin embargo, no hay un método claro de interpolación entre ellas. También son caras de normalizar, lo que es necesario para evitar que se introduzcan escalas.

Los ángulos de eje, como su nombre indica, son una forma de especificar un eje de rotación y un ángulo para girar alrededor de ese eje. Puedes pensar en los ángulos de Euler, como rotaciones de ángulos de tres ejes, donde los ejes son el eje x, y, z respectivamente. Interpolar linealmente el ángulo en un ángulo de eje es bastante sencillo (si recuerdas tomar el camino más corto), sin embargo interpolar linealmente entre diferentes ejes no lo es.

Los cuaterniones son una forma de especificar una rotación a través de un eje y el coseno de la mitad del ángulo. Su principal ventaja es que puedo elegir dos cuaterniones cualesquiera e interpolar suavemente entre ellos.

Los rotores son otra forma de realizar rotaciones. Los rotores son básicamente cuaterniones, pero en lugar de pensar en ellos como números complejos 4D, los rotores se consideran multivectores 3D reales. Esto hace que su visualización sea mucho más comprensible (en comparación con los cuaterniones), pero requiere soltura en el álgebra geométrica para comprender su significado.

Bien, con esto como telón de fondo, puedo hablar de un ejemplo del mundo real.

Digamos que estás escribiendo un juego de ordenador donde los personajes están animados en 3ds Max. Necesita exportar una animación del personaje para jugar en su juego, pero no puede representar fielmente representar fielmente la interpolación utilizada por el programa de animación, y por lo tanto tiene que hacer un muestreo. La animación va a representarse como una lista de rotaciones para cada articulación. ¿Cómo debemos almacenar las rotaciones?

Si voy a muestrear cada cuadro, no interpolar, y el espacio no es un problema, probablemente almacenaría las rotaciones como matrices de rotación. Si el espacio fuera un problema, entonces los ángulos de Euler. Eso también me permitiría hacer cosas como almacenar sólo un ángulo para las articulaciones como la rodilla que tienen sólo un grado de libertad.

Si sólo muestreo cada 4 cuadros, y necesito interpolar depende de si estoy seguro de que el frame-rate se se mantendrá. Si estoy seguro de que la velocidad de fotogramas se mantendrá, puedo utilizar rotaciones relativas del ángulo del eje rotaciones relativas de los ángulos para realizar la interpolación. Esto es atípico. En la mayoría de los juegos la velocidad de fotogramas puede caer más allá de mi intervalo de muestreo, lo que requeriría saltarse un elemento de la lista para mantener la velocidad correcta de velocidad de reproducción. Si no estoy seguro de qué dos orientaciones necesito interpolar entre ellas, entonces utilizaría cuaterniones o rotores.

10voto

alumb Puntos 2586

Uno de los lugares en los que se utilizan con frecuencia es en los juegos de ordenador, cuando se quiere pasar suavemente de una rotación a otra. Un artista puede haber dicho "en este momento quiero que la cabeza esté orientada así y en este otro momento la quiero así". El ordenador tiene que resolver lo que ocurre entre estas posturas. Es bastante fácil encontrar poses intermedias utilizando cuaterniones. Si las dos posturas son razonablemente similares, se puede obtener una orientación intermedia simplemente tomando la media de los cuaterniones. Puedes encontrar más información aquí .

4voto

Quiero añadir una aplicación de los cuaterniones. En la transmisión de radio multiantena, el llamado código Alamouti se basa en el álgebra de cuaterniones hamiltonianos. Véase

http://en.wikipedia.org/wiki/Space%E2%80%93time_block_code

para más información. Ese artículo de Wikipedia es un poco más general sobre la codificación Espacio-Tiempo, pero puedes encontrar la construcción de Alamouti allí. El álgebra de cuaterniones aparece allí como una forma de desenredar dos señales codificadas por Alamouti transmitidas por un par de antenas. Las ventajas vienen del hecho de que incluso si la señal de una antena se pierde para un receptor en particular (debido a que se encuentra en un nodo para esa onda de radio en particular), entonces la señal de la otra antena salva el día. Un receptor en movimiento dejará caer la señal de una antena de forma aleatoria, por lo que cuando se utilizan dos antenas independientes de esta forma la pérdida total de la señal se convierte en un evento más raro.

3voto

Chad Cooper Puntos 131

Puede ver un ejemplo real de cuaterniones en gráficos por ordenador con el programa de código abierto conocido como NASA WorldWind (http://worldwind.arc.nasa.gov/java/).

Utiliza un objeto Quaternion para representar la rotación de varias geometrías. La definición de la clase se encuentra en el archivo src/gov/nasa/worldwind/geom/Quaternion.java.

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