¿Por qué la gente usa cuaterniones?

15

Los he estado usando como una caja negra por un tiempo, solo estoy aprendiendo acerca de las matemáticas, pero me gustaría algunas respuestas definitivas a esta pregunta.

Hasta ahora, el único beneficio que he encontrado personalmente es la capacidad de SLERP entre dos ángulos: para lograr el mismo efecto con un vector que necesita un trabajo bastante desagradable (intrínsecamente vinculando 0 y 2PI).

Sir Yakalot
fuente
SLERP no es solo una interpolación entre dos ángulos: también se puede hacer fácilmente con la matriz. Puede interpolar entre dos orientaciones arbitrarias que es mucho más complejo cuando se hace con matrices.
Calmarius

Respuestas:

23

Los cuaterniones resuelven algunos problemas con elegancia:

  • Son tan compactos como las representaciones de ángulo de eje (4 valores escalares)
  • Se convierten fácilmente desde y hacia representaciones matriciales
  • La interpolación funciona desde cualquier ángulo de inicio a fin sin carcasa especial
  • Nunca exhiben cerradura de cardán

Puede solucionar estos problemas con otras representaciones, pero los cuaterniones son una buena opción para su simplicidad algorítmica y rendimiento.

Kai
fuente
1
¡Esto es exactamente lo que estaba buscando!
SirYakalot
@Kai Interpolation works from any start to end angle without special casing, en realidad hay un caso especial, cuando no están en el mismo hemisferio de la hiperesfera, este es realmente un caso especial que debes considerar, ya que siempre hay 2 direcciones para interpolar al objetivo y quieres elegir la correcta
Maik Semder
2
@Kai They never exhibit gimbal lock: eso no es del todo cierto. Pueden, simplemente multiplicarse q(Xaxis, 0) * q(YAxis, 90) * q(Zaxis, 20). Lo cierto es que pueden usarse para evitar el bloqueo del cardán, pero también pueden hacerlo las matrices, los ángulos de los ejes y otros. Entonces esa no es una propiedad única de los cuaterniones. De hecho, puede hacerlo con la mayoría de las representaciones de rotación, pero con ángulos de euler. El único mensaje verdadero aquí puede ser "Euler engles sufre de bloqueo de cardán", pero puede ser evitado por muchas otras representaciones de rotación, no solo cuaterniones.
Maik Semder
El rendimiento de un cuaternión tampoco es generalmente mejor en todos los casos, por ejemplo, es más rápido rotar un vector usando una matriz 3x3 que usando un cuaternión. Aquí hay un artículo interesante al respecto.
Maik Semder
3

El uso de SLERP que menciona es un caso específico de un atributo más general de cuaterniones: puede interpolar suavemente entre diferentes valores de rotación.

Al interpolar los valores de rotación de los ángulos de Euler, se obtienen movimientos de aspecto extraño, y lógicamente no hay forma de interpolar los valores de las rotaciones de ángulo de eje (bueno, aparte de dos ángulos diferentes alrededor del mismo eje).

jhocking
fuente
+1. Uno puede interpolar entre (w1, alpha1) y (w2, alpha2) convirtiendo estas representaciones de eje angular en quats y luego empleando SLERP. Por supuesto, uno puede hacer tal cosa a través de un esquema de Bezier / de Casteljau / esquema de spline y usar un "polígono / conjunto" de cuaterniones clave de tal manera y obtener una rotación complicada. Esta es quizás la única cosa que los cuaterniones hacen de forma más natural que otras representaciones, ya que SLERP y multiSLERP o sus variaciones (NLERP, SQUAD) presentan pares intermedios de eje / ángulo de rotación que se encuentran en una trayectoria de rotación geodésica / más corta. Prestigio.
teodron