Pregunta

Soy físico, y he estado aprendiendo alguna programación, y he encontrado muchas personas que usan cuaterniones para rotaciones en lugar de escribir cosas en forma de matriz/vector.

En física, hay muy buenas razones por las que no usamos cuaterniones (a pesar de la extraña historia que ocasionalmente se cuenta sobre Hamilton/Gibbs/etc.). La física requiere que nuestras descripciones tengan un buen comportamiento analítico (esto tiene un significado definido con precisión, pero de algunas maneras bastante técnicas que van mucho más allá de lo que se enseña en las clases de introducción normales, por lo que no entraré en ningún detalle). Resulta que los cuaterniones no tienen este buen comportamiento, por lo que no son útiles, y los vectores/matrices lo hacen, por lo que los usamos.

Sin embargo, restringidos a rotaciones y descripciones rígidas que no usan ninguna estructura analítica, las rotaciones 3D pueden describirse de manera equivalente de cualquier manera (o algunas otras formas).

En general, solo queremos un mapeo de un punto x = (x, y, z) a un nuevo punto x '= (x', y ', z') sujeto a la restricción que x2 = X '2. Y hay muchas cosas que hacen esto.

La forma ingenua es simplemente dibujar los triángulos que esto define y usar trigonometría, o usar el isomorfismo entre un punto (x, y, z) y un vector (x, y, z) y la función f (x) = x 'y una matriz mx = x ', o usando cuaterniones, o proyectando componentes del vector antiguo a lo largo del nuevo usando algún otro método (x, y, z)T. (a, b, c) (x ', y', z '), etc.

Desde un punto de vista matemático, estas descripciones son equivalentes en este entorno (como teorema). Todos tienen el mismo número de grados de libertad, el mismo número de restricciones, etc.

Entonces, ¿por qué los cuaterniones parecen preferidos a los vectores?

Las razones habituales que veo no son bloqueo de cardán ni problemas numéricos.

El argumento sin bloqueo de cardán parece extraño, ya que esto es solo un problema de los ángulos de Euler. También es solo un problema de coordenadas (al igual que la singularidad en r = 0 en las coordenadas polares (el rango jacobiano pierde), lo que significa que es solo un problema local y puede resolverse cambiando las coordenadas, girando de la degeneración, o usando dos sistemas de coordenadas superpuestos.

Estoy menos seguro de los problemas numéricos, ya que no sé en detalle cómo se implementarían ambas (y cualquier alternativa). He leído que volver a la normalización de un cuaternión es más fácil que hacerlo para una matriz de rotación, pero esto solo es cierto para una matriz general; Una rotación tiene restricciones adicionales que trivializa esto (que se incorporan a la definición de cuaterniones) (de hecho, esto tiene que ser cierto ya que tienen el mismo número de grados de libertad).

Entonces, ¿cuál es la razón del uso de cuaterniones sobre vectores u otras alternativas?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top