Cuaterniones y rotación espacial

Correspondencia entre cuaterniones y rotaciones 3D

Los cuaterniones unitarios , conocidos como versores , proporcionan una notación matemática conveniente para representar orientaciones espaciales y rotaciones de elementos en el espacio tridimensional. Específicamente, codifican información sobre una rotación de ángulo de eje sobre un eje arbitrario. Los cuaterniones de rotación y orientación tienen aplicaciones en gráficos de computadora , [1] visión por computadora , robótica , [2] navegación , dinámica molecular , dinámica de vuelo , [3] mecánica orbital de satélites , [4] y análisis de textura cristalográfica . [5]

Cuando se utilizan para representar rotación, los cuaterniones unitarios también se denominan cuaterniones de rotación , ya que representan el grupo de rotación 3D . Cuando se utilizan para representar una orientación (rotación relativa a un sistema de coordenadas de referencia), se denominan cuaterniones de orientación o cuaterniones de actitud . Una rotación espacial alrededor de un punto fijo de radianes sobre un eje unitario que denota el eje de Euler se da por el cuaternión , donde y . θ {\estilo de visualización \theta} ( incógnita , Y , O ) {\estilo de visualización (X, Y, Z)} ( do , incógnita S , Y S , O S ) {\displaystyle (C,X\,S,Y\,S,Z\,S)} do = porque ( θ / 2 ) {\displaystyle C=\cos(\theta /2)} S = pecado ( θ / 2 ) {\displaystyle S=\sin(\theta /2)}

En comparación con las matrices de rotación , los cuaterniones son más compactos, eficientes y numéricamente estables . En comparación con los ángulos de Euler , son más simples de componer . Sin embargo, no son tan intuitivos ni fáciles de entender y, debido a la naturaleza periódica del seno y el coseno, los ángulos de rotación que difieren precisamente por el período natural se codificarán en cuaterniones idénticos y los ángulos recuperados en radianes se limitarán a . [ 0 , 2 π ] {\displaystyle [0,2\pi ]}

Utilizando cuaterniones como rotaciones

Visualización 3D de una esfera y una rotación alrededor de un eje de Euler ( ) por un ángulo de e ^ {\displaystyle {\hat {e}}} θ {\displaystyle \theta }

En el espacio tridimensional, según el teorema de rotación de Euler , cualquier rotación o secuencia de rotaciones de un cuerpo rígido o sistema de coordenadas alrededor de un punto fijo es equivalente a una única rotación de un ángulo dado alrededor de un eje fijo (llamado eje de Euler ) que pasa por el punto fijo. [6] El eje de Euler se representa típicamente mediante un vector unitario ( en la imagen). Por lo tanto, cualquier rotación en tres dimensiones se puede representar mediante un vector y un ángulo . θ {\displaystyle \theta }   u {\displaystyle {\vec {u}}} e ^ {\displaystyle {\hat {e}}}   u {\displaystyle {\vec {u}}} θ {\displaystyle \theta }

Los cuaterniones proporcionan una forma sencilla de codificar esta representación eje-ángulo [7] utilizando cuatro números reales, y se pueden utilizar para aplicar (calcular) la rotación correspondiente a un vector de posición (x,y,z) , que representa un punto relativo al origen en R 3 .

Los vectores euclidianos como (2, 3, 4) o ( a x ,  a y ,  a z ) se pueden reescribir como 2  i + 3  j + 4  k o a x i + a y j + a z k , donde i , j , k son vectores unitarios que representan los tres ejes cartesianos (tradicionalmente x , y , z ), y también obedecen las reglas de multiplicación de las unidades fundamentales del cuaternión al interpretar el vector euclidiano ( a x ,  a y ,  a z ) como la parte vectorial del cuaternión puro (0, a x ,  a y ,  a z ) .

Una rotación de ángulo alrededor del eje definido por el vector unitario θ {\displaystyle \theta }

u = ( u x , u y , u z ) = u x i + u y j + u z k {\displaystyle \mathbf {u} =(u_{x},u_{y},u_{z})=u_{x}\mathbf {i} +u_{y}\mathbf {j} +u_{z}\mathbf {k} }

se puede representar por conjugación con un cuaternión unitario q . Como el producto de cuaterniones da 1, utilizando la serie de Taylor de la función exponencial, la extensión de la fórmula de Euler resulta:   ( 0 + u x i + u y j + u z k ) ( 0 u x i u y j u z k ) {\displaystyle \ (0+u_{x}\mathbf {i} +u_{y}\mathbf {j} +u_{z}\mathbf {k} )(0-u_{x}\mathbf {i} -u_{y}\mathbf {j} -u_{z}\mathbf {k} )}

q = e θ 2 ( u x i + u y j + u z k ) = cos θ 2 + ( u x i + u y j + u z k ) sin θ 2 = cos θ 2 + u sin θ 2 {\displaystyle \mathbf {q} =e^{{\frac {\theta }{2}}{(u_{x}\mathbf {i} +u_{y}\mathbf {j} +u_{z}\mathbf {k} )}}=\cos {\frac {\theta }{2}}+(u_{x}\mathbf {i} +u_{y}\mathbf {j} +u_{z}\mathbf {k} )\sin {\frac {\theta }{2}}=\cos {\frac {\theta }{2}}+\mathbf {u} \sin {\frac {\theta }{2}}}

Se puede demostrar [8] que la rotación deseada se puede aplicar a un vector ordinario en el espacio tridimensional, considerado como la parte vectorial del cuaternión puro , evaluando la conjugación de  p por  q , dada por: p = ( p x , p y , p z ) = p x i + p y j + p z k {\displaystyle \mathbf {p} =(p_{x},p_{y},p_{z})=p_{x}\mathbf {i} +p_{y}\mathbf {j} +p_{z}\mathbf {k} } p {\displaystyle \mathbf {p'} }

L ( p ) := q p q 1 = ( 0 , r ) , {\displaystyle L(\mathbf {p'} ):=\mathbf {q} \mathbf {p'} \mathbf {q} ^{-1}=(0,\mathbf {r} ),}
r = ( cos 2 θ 2 sin 2 θ 2 | | u | | 2 ) p + 2 sin 2 θ 2 ( u p ) u + 2 cos θ 2 sin θ 2 ( u × p ) , {\displaystyle \mathbf {r} =(\cos ^{2}{\frac {\theta }{2}}-\sin ^{2}{\frac {\theta }{2}}||\mathbf {u} ||^{2})\mathbf {p} +2\sin ^{2}{\frac {\theta }{2}}(\mathbf {u} \cdot \mathbf {p} )\mathbf {u} +2\cos {\frac {\theta }{2}}\sin {\frac {\theta }{2}}(\mathbf {u} \times \mathbf {p} ),}

utilizando el producto de Hamilton , donde la parte vectorial del cuaternión puro L( p ) = (0, r x ,  r y ,  r z ) es el nuevo vector de posición del punto después de la rotación. En una implementación programática, la conjugación se logra construyendo un cuaternión puro cuya parte vectorial es p , y luego realizando la conjugación del cuaternión. La parte vectorial del cuaternión puro resultante es el vector deseado r . Claramente, proporciona una transformación lineal del espacio de cuaterniones a sí mismo; [9] además, dado que es unitario, la transformación es una isometría. Además, y por lo tanto deja vectores paralelos a invariantes. Entonces, al descomponer como un vector paralelo a la parte vectorial de y un vector normal a la parte vectorial de y mostrando que la aplicación de al componente normal de lo rota, se demuestra la afirmación. Entonces sea el componente de ortogonal a la parte vectorial de y sea . Resulta que la parte vectorial de está dada por L {\displaystyle L} q {\displaystyle \mathbf {q} } L ( q ) = q {\displaystyle L(\mathbf {q} )=\mathbf {q} } L {\displaystyle L} q {\displaystyle \mathbf {q} } p {\displaystyle \mathbf {p} } ( u x , u y , u z ) sin θ 2 {\displaystyle (u_{x},u_{y},u_{z})\sin {\frac {\theta }{2}}} q {\displaystyle \mathbf {q} } q {\displaystyle \mathbf {q} } L {\displaystyle L} p {\displaystyle \mathbf {p} } n {\displaystyle \mathbf {n} } p {\displaystyle \mathbf {p} } q {\displaystyle \mathbf {q} } n T = n × u {\displaystyle \mathbf {n} _{T}=\mathbf {n} \times \mathbf {u} } L ( 0 , n ) {\displaystyle L(0,\mathbf {n} )}

( cos 2 θ 2 sin 2 θ 2 ) n + 2 ( cos θ 2 sin θ 2 ) n T = cos θ n + sin θ n T {\displaystyle \left(\cos ^{2}{\frac {\theta }{2}}-\sin ^{2}{\frac {\theta }{2}}\right)\mathbf {n} +2\left(\cos {\frac {\theta }{2}}\sin {\frac {\theta }{2}}\right)\mathbf {n} _{T}=\cos \theta \mathbf {n} +\sin \theta \mathbf {n} _{T}} .

La conjugación de p por q se puede expresar con menos operaciones aritméticas como:

r = p + 2 cos θ 2 sin θ 2 ( u × p ) + 2 sin 2 θ 2 u × ( u × p ) . {\displaystyle \mathbf {r} =\mathbf {p} +2\cos {\frac {\theta }{2}}\sin {\frac {\theta }{2}}(\mathbf {u} \times \mathbf {p} )+2\sin ^{2}{\frac {\theta }{2}}\mathbf {u} \times (\mathbf {u} \times \mathbf {p} ).}

Un hecho geométrico independiente de los cuaterniones es la existencia de una aplicación dos a uno de rotaciones físicas a matrices de transformación rotacional. Si 0 ⩽ ⩽ , una rotación física sobre por y una rotación física sobre por ambas alcanzan la misma orientación final por caminos disjuntos a través de orientaciones intermedias. Al insertar esos vectores y ángulos en la fórmula para q anterior, se encuentra que si q representa la primera rotación, q representa la segunda rotación. Esta es una prueba geométrica de que la conjugación por q y por q debe producir la misma matriz de transformación rotacional. Ese hecho se confirma algebraicamente al notar que la conjugación es cuadrática en q , por lo que el signo de q se cancela y no afecta el resultado. (Véase la aplicación 2:1 de SU(2) a SO(3) ) Si ambas rotaciones son una media vuelta , tanto q como q tendrán una coordenada real igual a cero. De lo contrario, uno tendrá una parte real positiva, que representa una rotación de un ángulo menor que , y el otro tendrá una parte real negativa, que representa una rotación de un ángulo mayor que . θ {\displaystyle \theta } 2 π {\displaystyle 2\pi } u {\displaystyle {\vec {u}}} θ {\displaystyle \theta } u {\displaystyle -{\vec {u}}} 2 π θ {\displaystyle 2\pi -\theta } ( θ = π ) {\displaystyle (\theta =\pi )} π {\displaystyle \pi } π {\displaystyle \pi }

Matemáticamente, esta operación lleva el conjunto de todos los cuaterniones "puros" p (aquellos cuya parte real es igual a cero) —que constituyen un espacio tridimensional entre los cuaterniones— hacia sí mismo, mediante la rotación deseada alrededor del eje u , en el ángulo θ. (Cada cuaternión real es llevado hacia sí mismo mediante esta operación. Pero, a los efectos de las rotaciones en el espacio tridimensional, ignoramos los cuaterniones reales.)

La rotación es en el sentido de las agujas del reloj si nuestra línea de visión apunta en la misma dirección que . u {\displaystyle {\vec {u}}}

En este (¿cuál?) caso, q es un cuaternión unitario y

q 1 = e θ 2 ( u x i + u y j + u z k ) = cos θ 2 ( u x i + u y j + u z k ) sin θ 2 . {\displaystyle \mathbf {q} ^{-1}=e^{-{\frac {\theta }{2}}{(u_{x}\mathbf {i} +u_{y}\mathbf {j} +u_{z}\mathbf {k} )}}=\cos {\frac {\theta }{2}}-(u_{x}\mathbf {i} +u_{y}\mathbf {j} +u_{z}\mathbf {k} )\sin {\frac {\theta }{2}}.}

De ello se deduce que la conjugación por el producto de dos cuaterniones es la composición de las conjugaciones por estos cuaterniones: Si p y q son cuaterniones unitarios, entonces la rotación (conjugación) por  pq es

p q v ( p q ) 1 = p q v q 1 p 1 = p ( q v q 1 ) p 1 {\displaystyle \mathbf {pq} {\vec {v}}(\mathbf {pq} )^{-1}=\mathbf {pq} {\vec {v}}\mathbf {q} ^{-1}\mathbf {p} ^{-1}=\mathbf {p} (\mathbf {q} {\vec {v}}\mathbf {q} ^{-1})\mathbf {p} ^{-1}} ,

que es lo mismo que rotar (conjugar) por  q y luego por  p . El componente escalar del resultado es necesariamente cero.

El inverso cuaternial de una rotación es la rotación opuesta, ya que . El cuadrado de una rotación cuaternial es una rotación de dos veces el ángulo alrededor del mismo eje. De manera más general, q n es una rotación de  n veces el ángulo alrededor del mismo eje que q . Esto se puede extender a un valor real arbitrario de n , lo que permite una interpolación suave entre orientaciones espaciales; consulte Slerp . q 1 ( q v q 1 ) q = v {\displaystyle \mathbf {q} ^{-1}(\mathbf {q} {\vec {v}}\mathbf {q} ^{-1})\mathbf {q} ={\vec {v}}}

Dos cuaterniones de rotación se pueden combinar en un cuaternión equivalente mediante la relación:

q = q 2 q 1 {\displaystyle \mathbf {q} '=\mathbf {q} _{2}\mathbf {q} _{1}}

donde q corresponde a la rotación q 1 seguida de la rotación q 2 . Por lo tanto, se puede componer un número arbitrario de rotaciones y luego aplicarlas como una sola rotación. (Tenga en cuenta que la multiplicación de cuaterniones no es conmutativa ).

Ejemplo de operación de conjugación

Una rotación de 120° alrededor de la primera diagonal permuta i , j y k cíclicamente.

Conjugar p por q se refiere a la operación pqpq −1 .

Considere la rotación f alrededor del eje , con un ángulo de rotación de 120°, o v = i + j + k {\displaystyle {\vec {v}}=\mathbf {i} +\mathbf {j} +\mathbf {k} } /3 radianes .

α = 2 π 3 {\displaystyle \alpha ={\frac {2\pi }{3}}}
pq p para q = 1 + i + j + k/2 en la unidad 3-esfera . Nótese que esta multiplicación unilateral (es decir, izquierda ) produce una rotación de 60° de los cuaterniones

La longitud de es 3 , el medio ángulo es v {\displaystyle {\vec {v}}} π/3 (60°) con coseno 1/2 , ( cos 60° = 0,5 ) y seno 3/2 , ( sen 60° ≈ 0,866 ). Por lo tanto, se trata de una conjugación por el cuaternión unidad

u = cos α 2 + sin α 2 1 v v = cos π 3 + sin π 3 1 3 v = 1 2 + 3 2 1 3 v = 1 2 + 3 2 i + j + k 3 = 1 + i + j + k 2 {\displaystyle {\begin{aligned}u&=\cos {\frac {\alpha }{2}}+\sin {\frac {\alpha }{2}}\cdot {\frac {1}{\|{\vec {v}}\|}}{\vec {v}}\\&=\cos {\frac {\pi }{3}}+\sin {\frac {\pi }{3}}\cdot {\frac {1}{\sqrt {3}}}{\vec {v}}\\&={\frac {1}{2}}+{\frac {\sqrt {3}}{2}}\cdot {\frac {1}{\sqrt {3}}}{\vec {v}}\\&={\frac {1}{2}}+{\frac {\sqrt {3}}{2}}\cdot {\frac {\mathbf {i} +\mathbf {j} +\mathbf {k} }{\sqrt {3}}}\\&={\frac {1+\mathbf {i} +\mathbf {j} +\mathbf {k} }{2}}\end{aligned}}}

Si f es la función de rotación,

f ( a i + b j + c k ) = u ( a i + b j + c k ) u 1 {\displaystyle f(a\mathbf {i} +b\mathbf {j} +c\mathbf {k} )=u(a\mathbf {i} +b\mathbf {j} +c\mathbf {k} )u^{-1}}

Se puede demostrar que la inversa de un cuaternión unitario se obtiene simplemente cambiando el signo de sus componentes imaginarios. En consecuencia,

u 1 = 1 i j k 2 {\displaystyle u^{-1}={\dfrac {1-\mathbf {i} -\mathbf {j} -\mathbf {k} }{2}}}

y

f ( a i + b j + c k ) = 1 + i + j + k 2 ( a i + b j + c k ) 1 i j k 2 {\displaystyle f(a\mathbf {i} +b\mathbf {j} +c\mathbf {k} )={\dfrac {1+\mathbf {i} +\mathbf {j} +\mathbf {k} }{2}}(a\mathbf {i} +b\mathbf {j} +c\mathbf {k} ){\dfrac {1-\mathbf {i} -\mathbf {j} -\mathbf {k} }{2}}}

Esto se puede simplificar, utilizando las reglas ordinarias de aritmética de cuaterniones, a

f ( a i + b j + c k ) = c i + a j + b k {\displaystyle f(a\mathbf {i} +b\mathbf {j} +c\mathbf {k} )=c\mathbf {i} +a\mathbf {j} +b\mathbf {k} }

Como era de esperar, la rotación corresponde a mantener un cubo fijo en un punto y rotarlo 120° alrededor de la diagonal larga que pasa por el punto fijo (observe cómo se permutan cíclicamente los tres ejes ).

Matriz de rotación derivada de cuaterniones

Una rotación de cuaternión (con ) se puede manipular algebraicamente para convertirla en una rotación matricial , donde es la matriz de rotación dada por: [10] p = q p q 1 {\displaystyle \mathbf {p'} =\mathbf {q} \mathbf {p} \mathbf {q} ^{-1}} q = q r + q i i + q j j + q k k {\displaystyle \mathbf {q} =q_{r}+q_{i}\mathbf {i} +q_{j}\mathbf {j} +q_{k}\mathbf {k} } p = R p {\displaystyle \mathbf {p'} =\mathbf {Rp} } R {\displaystyle \mathbf {R} }

R = [ s ( q j 2 + q k 2 ) 2 s ( q i q j q k q r ) 2 s ( q i q k + q j q r ) 2 s ( q i q j + q k q r ) s ( q i 2 + q k 2 ) 2 s ( q j q k q i q r ) 2 s ( q i q k q j q r ) 2 s ( q j q k + q i q r ) s ( q i 2 + q j 2 ) ] {\displaystyle \mathbf {R} ={\begin{bmatrix}s-(q_{j}^{2}+q_{k}^{2})&2s(q_{i}q_{j}-q_{k}q_{r})&2s(q_{i}q_{k}+q_{j}q_{r})\\2s(q_{i}q_{j}+q_{k}q_{r})&s-(q_{i}^{2}+q_{k}^{2})&2s(q_{j}q_{k}-q_{i}q_{r})\\2s(q_{i}q_{k}-q_{j}q_{r})&2s(q_{j}q_{k}+q_{i}q_{r})&s-(q_{i}^{2}+q_{j}^{2})\end{bmatrix}}}

Aquí y si q es un cuaternión unitario, . s = q 2 {\displaystyle s=\|q\|^{-2}} s = 1 2 = 1 {\displaystyle s=1^{-2}=1}

Esto se puede obtener mediante el uso de cálculo vectorial y álgebra lineal si expresamos y como partes escalares y vectoriales y usamos la fórmula para la operación de multiplicación en la ecuación . Si escribimos como , como y como , donde , nuestra ecuación se convierte en . Al usar la fórmula para la multiplicación de dos cuaterniones que se expresan como partes escalares y vectoriales, p {\displaystyle \mathbf {p} } q {\displaystyle \mathbf {q} } p = q p q 1 {\displaystyle \mathbf {p'} =\mathbf {q} \mathbf {p} \mathbf {q} ^{-1}} p {\displaystyle \mathbf {p} } ( 0 ,   p ) {\displaystyle \left(0,\ \mathbf {p} \right)} p {\displaystyle \mathbf {p} '} ( 0 ,   p ) {\displaystyle \left(0,\ \mathbf {p} '\right)} q {\displaystyle \mathbf {q} } ( q r ,   v ) {\displaystyle \left(q_{r},\ \mathbf {v} \right)} v = ( q i , q j , q k ) {\displaystyle \mathbf {v} =\left(q_{i},q_{j},q_{k}\right)} ( 0 ,   p ) = ( q r ,   v ) ( 0 ,   p ) s ( q r ,   v ) {\displaystyle \left(0,\ \mathbf {p} '\right)=\left(q_{r},\ \mathbf {v} \right)\left(0,\ \mathbf {p} \right)s\left(q_{r},\ -\mathbf {v} \right)}

( r 1 ,   v 1 ) ( r 2 ,   v 2 ) = ( r 1 r 2 v 1 v 2 ,   r 1 v 2 + r 2 v 1 + v 1 × v 2 ) , {\displaystyle \left(r_{1},\ {\vec {v}}_{1}\right)\left(r_{2},\ {\vec {v}}_{2}\right)=\left(r_{1}r_{2}-{\vec {v}}_{1}\cdot {\vec {v}}_{2},\ r_{1}{\vec {v}}_{2}+r_{2}{\vec {v}}_{1}+{\vec {v}}_{1}\times {\vec {v}}_{2}\right),}

Esta ecuación se puede reescribir como

( 0 ,   p ) = ( ( q r ,   v ) ( 0 ,   p ) ) s ( q r ,   v ) = ( q r 0 v p ,   q r p + 0 v + v × p ) s ( q r ,   v ) = s ( v p ,   q r p + v × p ) ( q r ,   v ) = s ( v p q r ( q r p + v × p ) ( v ) ,   ( v p ) ( v ) + q r ( q r p + v × p ) + ( q r p + v × p ) × ( v ) ) = s ( v p q r + q r v p ,   v ( v p ) + q r 2 p + q r v × p + v × ( q r p + v × p ) ) = ( 0 ,   s ( v v + q r 2 I + 2 q r [ v ] × + [ v ] × 2 ) p ) , {\displaystyle {\begin{aligned}(0,\ \mathbf {p} ')=&((q_{r},\ \mathbf {v} )(0,\ \mathbf {p} ))s(q_{r},\ -\mathbf {v} )\\=&(q_{r}0-\mathbf {v} \cdot \mathbf {p} ,\ q_{r}\mathbf {p} +0\mathbf {v} +\mathbf {v} \times \mathbf {p} )s(q_{r},\ -\mathbf {v} )\\=&s(-\mathbf {v} \cdot \mathbf {p} ,\ q_{r}\mathbf {p} +\mathbf {v} \times \mathbf {p} )(q_{r},\ -\mathbf {v} )\\=&s(-\mathbf {v} \cdot \mathbf {p} q_{r}-(q_{r}\mathbf {p} +\mathbf {v} \times \mathbf {p} )\cdot (-\mathbf {v} ),\ (-\mathbf {v} \cdot \mathbf {p} )(-\mathbf {v} )+q_{r}(q_{r}\mathbf {p} +\mathbf {v} \times \mathbf {p} )+(q_{r}\mathbf {p} +\mathbf {v} \times \mathbf {p} )\times (-\mathbf {v} ))\\=&s\left(-\mathbf {v} \cdot \mathbf {p} q_{r}+q_{r}\mathbf {v} \cdot \mathbf {p} ,\ \mathbf {v} \left(\mathbf {v} \cdot \mathbf {p} \right)+q_{r}^{2}\mathbf {p} +q_{r}\mathbf {v} \times \mathbf {p} +\mathbf {v} \times \left(q_{r}\mathbf {p} +\mathbf {v} \times \mathbf {p} \right)\right)\\=&\left(0,\ s\left(\mathbf {v} \otimes \mathbf {v} +q_{r}^{2}\mathbf {I} +2q_{r}[\mathbf {v} ]_{\times }+[\mathbf {v} ]_{\times }^{2}\right)\mathbf {p} \right),\end{aligned}}}

donde denota el producto externo , es la matriz identidad y es la matriz de transformación que al multiplicarse desde la derecha con un vector da el producto vectorial . {\displaystyle \otimes } I {\displaystyle \mathbf {I} } [ v ] × {\displaystyle [\mathbf {v} ]_{\times }} u {\displaystyle \mathbf {u} } v × u {\displaystyle \mathbf {v} \times \mathbf {u} }

Como , podemos identificarlo como , que al expandirlo debería dar como resultado la expresión escrita en forma matricial arriba. p = R p {\displaystyle \mathbf {p} '=\mathbf {R} \mathbf {p} } R {\displaystyle \mathbf {R} } s ( v v + q r 2 I + 2 q r [ v ] × + [ v ] × 2 ) {\displaystyle s\left(\mathbf {v} \otimes \mathbf {v} +q_{r}^{2}\mathbf {I} +2q_{r}[\mathbf {v} ]_{\times }+[\mathbf {v} ]_{\times }^{2}\right)}

Recuperando la representación eje-ángulo

La expresión gira cualquier cuaternión vectorial alrededor de un eje dado por el vector por el ángulo , donde y depende del cuaternión . q p q 1 {\displaystyle \mathbf {q} \mathbf {p} \mathbf {q} ^{-1}} p {\displaystyle \mathbf {p} } a {\displaystyle \mathbf {a} } θ {\displaystyle \theta } a {\displaystyle \mathbf {a} } θ {\displaystyle \theta } q = q r + q i i + q j j + q k k {\displaystyle \mathbf {q} =q_{r}+q_{i}\mathbf {i} +q_{j}\mathbf {j} +q_{k}\mathbf {k} }

a {\displaystyle \mathbf {a} } y se puede encontrar a partir de las siguientes ecuaciones: θ {\displaystyle \theta }

( a x , a y , a z ) = ( q i , q j , q k ) q i 2 + q j 2 + q k 2 θ = 2 atan2 ( q i 2 + q j 2 + q k 2 , q r ) , {\displaystyle {\begin{aligned}(a_{x},a_{y},a_{z})={}&{\frac {(q_{i},q_{j},q_{k})}{\sqrt {q_{i}^{2}+q_{j}^{2}+q_{k}^{2}}}}\\[2pt]\theta =2\operatorname {atan2} &\left({\sqrt {q_{i}^{2}+q_{j}^{2}+q_{k}^{2}}},\,q_{r}\right),\end{aligned}}}

donde es la arcotangente de dos argumentos . Si bien funciona, es numéricamente inestable (inexacto) cerca de números con precisión finita. atan2 {\displaystyle \operatorname {atan2} } θ = 2 acos ( q r ) {\displaystyle \theta =2\operatorname {acos} (q_{r})} q r = ± 1 {\displaystyle q_{r}=\pm 1}

Se debe tener cuidado cuando el cuaternión se aproxima a un escalar , ya que debido a la degeneración el eje de una rotación de identidad no está bien definido.

La composición de las rotaciones espaciales

Una ventaja de la formulación del cuaternión de la composición de dos rotaciones R B y R A es que produce directamente el eje de rotación y el ángulo de la rotación compuesta R C = R B R A .

Sea el cuaternión asociado a una rotación espacial R construido a partir de su eje de rotación S con el ángulo de rotación alrededor de este eje. El cuaternión asociado está dado por Entonces la composición de la rotación R B con R A es la rotación R C = R B R A con eje de rotación y ángulo definidos por el producto de los cuaterniones que es φ {\displaystyle \varphi } S = cos φ 2 + S sin φ 2 . {\displaystyle S=\cos {\frac {\varphi }{2}}+\mathbf {S} \sin {\frac {\varphi }{2}}.} A = cos α 2 + A sin α 2 and B = cos β 2 + B sin β 2 , {\displaystyle A=\cos {\frac {\alpha }{2}}+\mathbf {A} \sin {\frac {\alpha }{2}}\quad {\text{and}}\quad B=\cos {\frac {\beta }{2}}+\mathbf {B} \sin {\frac {\beta }{2}},} C = cos γ 2 + C sin γ 2 = ( cos β 2 + B sin β 2 ) ( cos α 2 + A sin α 2 ) . {\displaystyle C=\cos {\frac {\gamma }{2}}+\mathbf {C} \sin {\frac {\gamma }{2}}=\left(\cos {\frac {\beta }{2}}+\mathbf {B} \sin {\frac {\beta }{2}}\right)\left(\cos {\frac {\alpha }{2}}+\mathbf {A} \sin {\frac {\alpha }{2}}\right).}

Expande este producto para obtener cos γ 2 + C sin γ 2 = ( cos β 2 cos α 2 B A sin β 2 sin α 2 ) + ( B sin β 2 cos α 2 + A sin α 2 cos β 2 + B × A sin β 2 sin α 2 ) . {\displaystyle \cos {\frac {\gamma }{2}}+\mathbf {C} \sin {\frac {\gamma }{2}}=\left(\cos {\frac {\beta }{2}}\cos {\frac {\alpha }{2}}-\mathbf {B} \cdot \mathbf {A} \sin {\frac {\beta }{2}}\sin {\frac {\alpha }{2}}\right)+\left(\mathbf {B} \sin {\frac {\beta }{2}}\cos {\frac {\alpha }{2}}+\mathbf {A} \sin {\frac {\alpha }{2}}\cos {\frac {\beta }{2}}+\mathbf {B} \times \mathbf {A} \sin {\frac {\beta }{2}}\sin {\frac {\alpha }{2}}\right).}

Divida ambos lados de esta ecuación por la identidad, que es la ley de los cosenos en una esfera , y calcule cos γ 2 = cos β 2 cos α 2 B A sin β 2 sin α 2 , {\displaystyle \cos {\frac {\gamma }{2}}=\cos {\frac {\beta }{2}}\cos {\frac {\alpha }{2}}-\mathbf {B} \cdot \mathbf {A} \sin {\frac {\beta }{2}}\sin {\frac {\alpha }{2}},} C tan γ 2 = B tan β 2 + A tan α 2 + B × A tan β 2 tan α 2 1 B A tan β 2 tan α 2 . {\displaystyle \mathbf {C} \tan {\frac {\gamma }{2}}={\frac {\mathbf {B} \tan {\frac {\beta }{2}}+\mathbf {A} \tan {\frac {\alpha }{2}}+\mathbf {B} \times \mathbf {A} \tan {\frac {\beta }{2}}\tan {\frac {\alpha }{2}}}{1-\mathbf {B} \cdot \mathbf {A} \tan {\frac {\beta }{2}}\tan {\frac {\alpha }{2}}}}.}

Esta es la fórmula de Rodrigues para el eje de una rotación compuesta definida en términos de los ejes de las dos rotaciones. Derivó esta fórmula en 1840 (véase la página 408). [11]

Los tres ejes de rotación A , B y C forman un triángulo esférico y los ángulos diedros entre los planos formados por los lados de este triángulo están definidos por los ángulos de rotación. Hamilton [12] presentó la forma componente de estas ecuaciones mostrando que el producto de cuaterniones calcula el tercer vértice de un triángulo esférico a partir de dos vértices dados y sus longitudes de arco asociadas, lo que también define un álgebra para puntos en geometría elíptica .

Composición eje-ángulo

El eje de rotación normalizado, al quitar el del producto expandido, deja el vector que es el eje de rotación, multiplicado por alguna constante. Se debe tener cuidado al normalizar el vector del eje cuando es o donde el vector está cerca de ; que es identidad, o rotación 0 alrededor de cualquier eje. cos γ 2 {\textstyle \cos {\frac {\gamma }{2}}} γ {\displaystyle \gamma } 0 {\displaystyle 0} k 2 π {\displaystyle k2\pi } 0 {\displaystyle 0}

γ = 2 cos 1 ( cos β 2 cos α 2 B A sin β 2 sin α 2 ) D = B sin β 2 cos α 2 + A sin α 2 cos β 2 + B × A sin β 2 sin α 2 {\displaystyle {\begin{aligned}\gamma &=2\cos ^{-1}\left(\cos {\frac {\beta }{2}}\cos {\frac {\alpha }{2}}-\mathbf {B} \cdot \mathbf {A} \sin {\frac {\beta }{2}}\sin {\frac {\alpha }{2}}\right)\\\mathbf {D} &=\mathbf {B} \sin {\frac {\beta }{2}}\cos {\frac {\alpha }{2}}+\mathbf {A} \sin {\frac {\alpha }{2}}\cos {\frac {\beta }{2}}+\mathbf {B} \times \mathbf {A} \sin {\frac {\beta }{2}}\sin {\frac {\alpha }{2}}\end{aligned}}}

O con sustituciones trigonométricas de adición de ángulos ... γ = 2 cos 1 ( ( 1 A B ) cos β α 2 + ( 1 + A B ) cos β + α 2 ) D = ( sin β + α 2 + sin β α 2 ) A + ( sin β + α 2 sin β α 2 ) B + ( cos β α 2 cos β + α 2 ) B × A {\displaystyle {\begin{aligned}\gamma &=2\cos ^{-1}\left(\left(1-\mathbf {A} \cdot \mathbf {B} \right)\cos {\frac {\beta -\alpha }{2}}+\left(1+\mathbf {A} \cdot \mathbf {B} \right)\cos {\frac {\beta +\alpha }{2}}\right)\\\mathbf {D} &=\left(\sin {\frac {\beta +\alpha }{2}}+\sin {\frac {\beta -\alpha }{2}}\right)\mathbf {A} +\left(\sin {\frac {\beta +\alpha }{2}}-\sin {\frac {\beta -\alpha }{2}}\right)\mathbf {B} +\left(\cos {\frac {\beta -\alpha }{2}}-\cos {\frac {\beta +\alpha }{2}}\right)\mathbf {B} \times \mathbf {A} \end{aligned}}}

Finalmente normalizando el eje de rotación: o . D 2 sin 1 2 γ {\textstyle {\frac {\mathbf {D} }{2\sin {\frac {1}{2}}\gamma }}} D D {\textstyle {\frac {\mathbf {D} }{\|\mathbf {D} \|}}}

Diferenciación respecto al cuaternión de rotación

El cuaternión rotado p' = q p q −1 debe diferenciarse con respecto al cuaternión rotatorio q , cuando la rotación se estima a partir de la optimización numérica. La estimación del ángulo de rotación es un procedimiento esencial en el registro de objetos 3D o la calibración de cámaras. Para q unitario y p imaginario puro , es decir, para una rotación en el espacio 3D, las derivadas del cuaternión rotado se pueden representar utilizando la notación de cálculo matricial como

p q [ p q 0 , p q x , p q y , p q z ] = [ p q ( p q ) , ( p q i ) p q i , ( p q j ) p q j , ( p q k ) p q k ] . {\displaystyle {\begin{aligned}{\frac {\partial \mathbf {p'} }{\partial \mathbf {q} }}\equiv \left[{\frac {\partial \mathbf {p'} }{\partial q_{0}}},{\frac {\partial \mathbf {p'} }{\partial q_{x}}},{\frac {\partial \mathbf {p'} }{\partial q_{y}}},{\frac {\partial \mathbf {p'} }{\partial q_{z}}}\right]=\left[\mathbf {pq} -(\mathbf {pq} )^{*},(\mathbf {pqi} )^{*}-\mathbf {pqi} ,(\mathbf {pqj} )^{*}-\mathbf {pqj} ,(\mathbf {pqk} )^{*}-\mathbf {pqk} \right].\end{aligned}}}

Se puede encontrar una derivación en [13] .

Fondo

Cuaterniones

Los números complejos se pueden definir introduciendo un símbolo abstracto i que satisface las reglas habituales del álgebra y además la regla i 2 = −1 . Esto es suficiente para reproducir todas las reglas de la aritmética de números complejos: por ejemplo:

( a + b i ) ( c + d i ) = a c + a d i + b i c + b i d i = a c + a d i + b c i + b d i 2 = ( a c b d ) + ( b c + a d ) i . {\displaystyle (a+b\mathbf {i} )(c+d\mathbf {i} )=ac+ad\mathbf {i} +b\mathbf {i} c+b\mathbf {i} d\mathbf {i} =ac+ad\mathbf {i} +bc\mathbf {i} +bd\mathbf {i} ^{2}=(ac-bd)+(bc+ad)\mathbf {i} .}

De la misma manera, los cuaterniones pueden definirse introduciendo símbolos abstractos i , j , k que satisfacen las reglas i 2 = j 2 = k 2 = i j k = −1 y las reglas algebraicas usuales excepto la ley conmutativa de la multiplicación (un ejemplo familiar de tal multiplicación no conmutativa es la multiplicación de matrices ). De aquí se desprenden todas las reglas de la aritmética de cuaterniones, como las reglas sobre la multiplicación de elementos base de cuaterniones . Usando estas reglas, uno puede demostrar que:

( a + b i + c j + d k ) ( e + f i + g j + h k ) = ( a e b f c g d h ) + ( a f + b e + c h d g ) i + ( a g b h + c e + d f ) j + ( a h + b g c f + d e ) k . {\displaystyle {\begin{aligned}&(a+b\mathbf {i} +c\mathbf {j} +d\mathbf {k} )(e+f\mathbf {i} +g\mathbf {j} +h\mathbf {k} )=\\&(ae-bf-cg-dh)+(af+be+ch-dg)\mathbf {i} +(ag-bh+ce+df)\mathbf {j} +(ah+bg-cf+de)\mathbf {k} .\end{aligned}}}

La parte imaginaria de un cuaternión se comporta como un vector en el espacio vectorial tridimensional , y la parte real a se comporta como un escalar en R. Cuando se utilizan cuaterniones en geometría, es más conveniente definirlos como un escalar más un vector : b i + c j + d k {\displaystyle b\mathbf {i} +c\mathbf {j} +d\mathbf {k} } v = ( b , c , d ) {\displaystyle {\vec {v}}=(b,c,d)}

a + b i + c j + d k = a + v . {\displaystyle a+b\mathbf {i} +c\mathbf {j} +d\mathbf {k} =a+{\vec {v}}.}

A algunos les puede parecer extraño sumar un número a un vector , ya que son objetos de naturalezas muy diferentes, o multiplicar dos vectores entre sí, ya que esta operación suele estar indefinida. Sin embargo, si se recuerda que se trata de una mera notación para las partes real e imaginaria de un cuaternión, se vuelve más legítima. En otras palabras, el razonamiento correcto es la suma de dos cuaterniones, uno con parte vectorial/imaginaria cero y otro con parte escalar/real cero:

q 1 = s + v = ( s , 0 ) + ( 0 , v ) . {\displaystyle q_{1}=s+{\vec {v}}=\left(s,{\vec {0}}\right)+\left(0,{\vec {v}}\right).}

Podemos expresar la multiplicación de cuaterniones en el lenguaje moderno de productos vectoriales y escalares ( que en realidad se inspiraron en los cuaterniones en primer lugar [14] ). Al multiplicar las partes vectoriales/imaginarias, en lugar de las reglas i 2 = j 2 = k 2 = ijk = −1 tenemos la regla de multiplicación de cuaterniones:

v w = v w + v × w , {\displaystyle {\vec {v}}{\vec {w}}=-{\vec {v}}\cdot {\vec {w}}+{\vec {v}}\times {\vec {w}},}

dónde:

  • v w {\displaystyle {\vec {v}}{\vec {w}}} es el cuaternión resultante,
  • v × w {\displaystyle {\vec {v}}\times {\vec {w}}} es el producto vectorial (un vector),
  • v w {\displaystyle {\vec {v}}\cdot {\vec {w}}} es un producto escalar vectorial (un escalar).

La multiplicación de cuaterniones no es conmutativa (debido al producto vectorial, que conmuta ), mientras que las multiplicaciones escalar-escalar y escalar-vector son conmutativas. De estas reglas se deduce inmediatamente que (véase Cuaterniones § Cuaterniones y geometría tridimensional ):

q 1 q 2 = ( s + v ) ( t + w ) = ( s t v w ) + ( s w + t v + v × w ) . {\displaystyle q_{1}q_{2}=\left(s+{\vec {v}}\right)\left(t+{\vec {w}}\right)=\left(st-{\vec {v}}\cdot {\vec {w}}\right)+\left(s{\vec {w}}+t{\vec {v}}+{\vec {v}}\times {\vec {w}}\right).}

El inverso o recíproco multiplicativo (izquierdo y derecho) de un cuaternión distinto de cero se da por la relación conjugado-norma ( ver detalles ):

q 1 1 = ( s + v ) 1 = ( s + v ) s + v 2 = s v s 2 + v 2 , {\displaystyle q_{1}^{-1}=\left(s+{\vec {v}}\right)^{-1}={\frac {\left(s+{\vec {v}}\right)^{*}}{\lVert s+{\vec {v}}\rVert ^{2}}}={\frac {s-{\vec {v}}}{s^{2}+\lVert {\vec {v}}\rVert ^{2}}},}

como se puede verificar mediante cálculo directo (nótese la similitud con el inverso multiplicativo de los números complejos ).

Identidad de rotación

Sea un vector unitario (el eje de rotación) y sea . Nuestro objetivo es demostrar que u {\displaystyle {\vec {u}}} q = cos α 2 + u sin α 2 {\displaystyle q=\cos {\frac {\alpha }{2}}+{\vec {u}}\sin {\frac {\alpha }{2}}}

v = q v q 1 = ( cos α 2 + u sin α 2 ) v ( cos α 2 u sin α 2 ) {\displaystyle {\vec {v}}'=q{\vec {v}}q^{-1}=\left(\cos {\frac {\alpha }{2}}+{\vec {u}}\sin {\frac {\alpha }{2}}\right)\,{\vec {v}}\,\left(\cos {\frac {\alpha }{2}}-{\vec {u}}\sin {\frac {\alpha }{2}}\right)}

produce el vector rotado un ángulo alrededor del eje . Desarrollando (y teniendo en cuenta que ), tenemos v {\displaystyle {\vec {v}}} α {\displaystyle \alpha } u {\displaystyle {\vec {u}}} u v = u × v u v {\displaystyle {\vec {u}}{\vec {v}}={\vec {u}}\times {\vec {v}}-{\vec {u}}\cdot {\vec {v}}}

v = v cos 2 α 2 + ( u v v u ) sin α 2 cos α 2 u v u sin 2 α 2 = v cos 2 α 2 + 2 ( u × v ) sin α 2 cos α 2 ( ( u × v ) ( u v ) ) u sin 2 α 2 = v cos 2 α 2 + 2 ( u × v ) sin α 2 cos α 2 ( ( u × v ) u ( u v ) u ) sin 2 α 2 = v cos 2 α 2 + 2 ( u × v ) sin α 2 cos α 2 ( ( ( u × v ) × u ( u × v ) u ) ( u v ) u ) sin 2 α 2 = v cos 2 α 2 + 2 ( u × v ) sin α 2 cos α 2 ( ( v ( u v ) u ) 0 ( u v ) u ) sin 2 α 2 = v cos 2 α 2 + 2 ( u × v ) sin α 2 cos α 2 ( v 2 u ( u v ) ) sin 2 α 2 = v cos 2 α 2 + 2 ( u × v ) sin α 2 cos α 2 + ( 2 u ( u v ) v ) sin 2 α 2 {\displaystyle {\begin{aligned}{\vec {v}}'&={\vec {v}}\cos ^{2}{\frac {\alpha }{2}}+\left({\vec {u}}{\vec {v}}-{\vec {v}}{\vec {u}}\right)\sin {\frac {\alpha }{2}}\cos {\frac {\alpha }{2}}-{\vec {u}}{\vec {v}}{\vec {u}}\sin ^{2}{\frac {\alpha }{2}}\\[6pt]&={\vec {v}}\cos ^{2}{\frac {\alpha }{2}}+2\left({\vec {u}}\times {\vec {v}}\right)\sin {\frac {\alpha }{2}}\cos {\frac {\alpha }{2}}-\left(\left({\vec {u}}\times {\vec {v}}\right)-\left({\vec {u}}\cdot {\vec {v}}\right)\right){\vec {u}}\sin ^{2}{\frac {\alpha }{2}}\\[6pt]&={\vec {v}}\cos ^{2}{\frac {\alpha }{2}}+2\left({\vec {u}}\times {\vec {v}}\right)\sin {\frac {\alpha }{2}}\cos {\frac {\alpha }{2}}-\left(\left({\vec {u}}\times {\vec {v}}\right){\vec {u}}-\left({\vec {u}}\cdot {\vec {v}}\right){\vec {u}}\right)\sin ^{2}{\frac {\alpha }{2}}\\[6pt]&={\vec {v}}\cos ^{2}{\frac {\alpha }{2}}+2\left({\vec {u}}\times {\vec {v}}\right)\sin {\frac {\alpha }{2}}\cos {\frac {\alpha }{2}}-\left(\left(\left({\vec {u}}\times {\vec {v}}\right)\times {\vec {u}}-\left({\vec {u}}\times {\vec {v}}\right)\cdot {\vec {u}}\right)-\left({\vec {u}}\cdot {\vec {v}}\right){\vec {u}}\right)\sin ^{2}{\frac {\alpha }{2}}\\[6pt]&={\vec {v}}\cos ^{2}{\frac {\alpha }{2}}+2\left({\vec {u}}\times {\vec {v}}\right)\sin {\frac {\alpha }{2}}\cos {\frac {\alpha }{2}}-\left(\left({\vec {v}}-\left({\vec {u}}\cdot {\vec {v}}\right){\vec {u}}\right)-0-\left({\vec {u}}\cdot {\vec {v}}\right){\vec {u}}\right)\sin ^{2}{\frac {\alpha }{2}}\\[6pt]&={\vec {v}}\cos ^{2}{\frac {\alpha }{2}}+2\left({\vec {u}}\times {\vec {v}}\right)\sin {\frac {\alpha }{2}}\cos {\frac {\alpha }{2}}-\left({\vec {v}}-2{\vec {u}}\left({\vec {u}}\cdot {\vec {v}}\right)\right)\sin ^{2}{\frac {\alpha }{2}}\\[6pt]&={\vec {v}}\cos ^{2}{\frac {\alpha }{2}}+2\left({\vec {u}}\times {\vec {v}}\right)\sin {\frac {\alpha }{2}}\cos {\frac {\alpha }{2}}+\left(2{\vec {u}}\left({\vec {u}}\cdot {\vec {v}}\right)-{\vec {v}}\right)\sin ^{2}{\frac {\alpha }{2}}\\[6pt]\end{aligned}}}

Si dejamos y igualamos las componentes de perpendicular y paralela a respectivamente, entonces y , lo que lleva a v {\displaystyle {\vec {v}}_{\bot }} v {\displaystyle {\vec {v}}_{\|}} v {\displaystyle {\vec {v}}} u {\displaystyle {\vec {u}}} v = v + v {\displaystyle {\vec {v}}={\vec {v}}_{\bot }+{\vec {v}}_{\|}} u ( u v ) = v {\displaystyle {\vec {u}}\left({\vec {u}}\cdot {\vec {v}}\right)={\vec {v}}_{\|}}

v = v cos 2 α 2 + 2 ( u × v ) sin α 2 cos α 2 + ( 2 u ( u v ) v ) sin 2 α 2 = ( v + v ) cos 2 α 2 + 2 ( u × v ) sin α 2 cos α 2 + ( v v ) sin 2 α 2 = v ( cos 2 α 2 + sin 2 α 2 ) + ( u × v ) ( 2 sin α 2 cos α 2 ) + v ( cos 2 α 2 sin 2 α 2 ) {\displaystyle {\begin{aligned}{\vec {v}}'&={\vec {v}}\cos ^{2}{\frac {\alpha }{2}}+2\left({\vec {u}}\times {\vec {v}}\right)\sin {\frac {\alpha }{2}}\cos {\frac {\alpha }{2}}+\left(2{\vec {u}}\left({\vec {u}}\cdot {\vec {v}}\right)-{\vec {v}}\right)\sin ^{2}{\frac {\alpha }{2}}\\[6pt]&=\left({\vec {v}}_{\|}+{\vec {v}}_{\bot }\right)\cos ^{2}{\frac {\alpha }{2}}+2\left({\vec {u}}\times {\vec {v}}\right)\sin {\frac {\alpha }{2}}\cos {\frac {\alpha }{2}}+\left({\vec {v}}_{\|}-{\vec {v}}_{\bot }\right)\sin ^{2}{\frac {\alpha }{2}}\\[6pt]&={\vec {v}}_{\|}\left(\cos ^{2}{\frac {\alpha }{2}}+\sin ^{2}{\frac {\alpha }{2}}\right)+\left({\vec {u}}\times {\vec {v}}\right)\left(2\sin {\frac {\alpha }{2}}\cos {\frac {\alpha }{2}}\right)+{\vec {v}}_{\bot }\left(\cos ^{2}{\frac {\alpha }{2}}-\sin ^{2}{\frac {\alpha }{2}}\right)\\[6pt]\end{aligned}}}

Usando las identidades trigonométricas pitagóricas y de ángulo doble , entonces tenemos

v = v ( cos 2 α 2 + sin 2 α 2 ) + ( u × v ) ( 2 sin α 2 cos α 2 ) + v ( cos 2 α 2 sin 2 α 2 ) = v + ( u × v ) sin α + v cos α {\displaystyle {\begin{aligned}{\vec {v}}'&={\vec {v}}_{\|}\left(\cos ^{2}{\frac {\alpha }{2}}+\sin ^{2}{\frac {\alpha }{2}}\right)+\left({\vec {u}}\times {\vec {v}}\right)\left(2\sin {\frac {\alpha }{2}}\cos {\frac {\alpha }{2}}\right)+{\vec {v}}_{\bot }\left(\cos ^{2}{\frac {\alpha }{2}}-\sin ^{2}{\frac {\alpha }{2}}\right)\\[6pt]&={\vec {v}}_{\|}+\left({\vec {u}}\times {\vec {v}}\right)\sin \alpha +{\vec {v}}_{\bot }\cos \alpha \end{aligned}}}

Esta es la fórmula de una rotación alrededor del eje u . α {\displaystyle \alpha }

Operaciones de rotación de cuaterniones

Altman ofrece una explicación muy formal de las propiedades utilizadas en esta sección. [15]

La hiperesfera de rotaciones

Visualizando el espacio de rotaciones

Los cuaterniones unitarios representan el grupo de rotaciones euclidianas en tres dimensiones de una manera muy sencilla. La correspondencia entre rotaciones y cuaterniones se puede entender visualizando primero el espacio de rotaciones en sí.

Dos rotaciones independientes, que difieren en el ángulo y el eje, en el espacio de rotaciones. Aquí, la longitud de cada vector de eje es relativa a la magnitud respectiva de la rotación sobre ese eje.

Para visualizar el espacio de rotaciones, resulta útil considerar un caso más simple. Cualquier rotación en tres dimensiones se puede describir mediante una rotación de un ángulo en torno a un eje ; para nuestros propósitos, utilizaremos un vector de eje para establecer la lateralidad de nuestro ángulo. Consideremos el caso especial en el que el eje de rotación se encuentra en el plano xy . Podemos entonces especificar el eje de una de estas rotaciones mediante un punto en un círculo a través del cual cruza el vector, y podemos seleccionar el radio del círculo para denotar el ángulo de rotación .

De manera similar, una rotación cuyo eje de rotación se encuentra en el plano xy puede describirse como un punto en una esfera de radio fijo en tres dimensiones. Comenzando en el polo norte de una esfera en el espacio tridimensional, especificamos el punto en el polo norte como la rotación identidad (una rotación de ángulo cero). Al igual que en el caso de la rotación identidad, no se define ningún eje de rotación y el ángulo de rotación (cero) es irrelevante. Una rotación que tenga un ángulo de rotación muy pequeño puede especificarse mediante un corte a través de la esfera paralelo al plano xy y muy cerca del polo norte. El círculo definido por este corte será muy pequeño, correspondiente al pequeño ángulo de la rotación. A medida que los ángulos de rotación se hacen más grandes, el corte se mueve en la dirección z negativa y los círculos se hacen más grandes hasta que se alcanza el ecuador de la esfera, que corresponderá a un ángulo de rotación de 180 grados. Continuando hacia el sur, los radios de los círculos ahora se hacen más pequeños (correspondientes al valor absoluto del ángulo de la rotación considerado como un número negativo). Finalmente, cuando se alcanza el polo sur, los círculos se contraen una vez más hasta la rotación identidad, que también se especifica como el punto en el polo sur.

Observe que en esta visualización se pueden ver varias características de dichas rotaciones y sus representaciones. El espacio de rotaciones es continuo, cada rotación tiene un vecindario de rotaciones que son casi iguales y este vecindario se vuelve plano a medida que el vecindario se encoge. Además, cada rotación está representada en realidad por dos puntos antípodas en la esfera, que están en los extremos opuestos de una línea que pasa por el centro de la esfera. Esto refleja el hecho de que cada rotación puede representarse como una rotación sobre algún eje o, equivalentemente, como una rotación negativa sobre un eje que apunta en la dirección opuesta (una llamada doble cobertura ). La "latitud" de un círculo que representa un ángulo de rotación particular será la mitad del ángulo representado por esa rotación, ya que a medida que el punto se mueve del polo norte al polo sur, la latitud varía de cero a 180 grados, mientras que el ángulo de rotación varía de 0 a 360 grados. (La "longitud" de un punto representa entonces un eje de rotación particular). Observe, sin embargo, que este conjunto de rotaciones no está cerrado bajo composición. Dos rotaciones sucesivas con ejes en el plano xy no necesariamente darán como resultado una rotación cuyo eje se encuentre en el plano xy y, por lo tanto, no se puede representar como un punto en la esfera. Este no será el caso con una rotación general en el espacio tridimensional, en el que las rotaciones forman un conjunto cerrado bajo composición.

La esfera de rotaciones para las rotaciones que tienen un eje "horizontal" (en el plano xy ).

Esta visualización se puede extender a una rotación general en un espacio tridimensional. La rotación identidad es un punto, y un pequeño ángulo de rotación sobre algún eje se puede representar como un punto en una esfera con un radio pequeño. A medida que el ángulo de rotación crece, la esfera crece, hasta que el ángulo de rotación alcanza los 180 grados, momento en el que la esfera comienza a encogerse, convirtiéndose en un punto a medida que el ángulo se acerca a los 360 grados (o cero grados desde la dirección negativa). Este conjunto de esferas que se expanden y contraen representa una hiperesfera en un espacio de cuatro dimensiones (una 3-esfera). Al igual que en el ejemplo más simple anterior, cada rotación representada como un punto en la hiperesfera se corresponde con su punto antípoda en esa hiperesfera. La "latitud" en la hiperesfera será la mitad del ángulo de rotación correspondiente, y la vecindad de cualquier punto se volverá "más plana" (es decir, estará representada por un espacio euclidiano de puntos en 3-D) a medida que la vecindad se encoge. Este comportamiento se corresponde con el conjunto de cuaterniones unitarios: un cuaternión general representa un punto en un espacio de cuatro dimensiones, pero al restringirlo a una magnitud unitaria se obtiene un espacio tridimensional equivalente a la superficie de una hiperesfera. La magnitud del cuaternión unitario será la unidad, lo que corresponde a una hiperesfera de radio unitario. La parte vectorial de un cuaternión unitario representa el radio de la 2-esfera correspondiente al eje de rotación, y su magnitud es el seno de la mitad del ángulo de rotación. Cada rotación está representada por dos cuaterniones unitarios de signo opuesto y, como en el espacio de rotaciones en tres dimensiones, el producto de cuaterniones de dos cuaterniones unitarios dará como resultado un cuaternión unitario. Además, el espacio de cuaterniones unitarios es "plano" en cualquier entorno infinitesimal de un cuaternión unitario dado.

Parametrizando el espacio de rotaciones

Podemos parametrizar la superficie de una esfera con dos coordenadas, como la latitud y la longitud. Pero la latitud y la longitud se comportan mal ( se degeneran , como lo describe el teorema de la bola peluda ) en los polos norte y sur, aunque los polos no son intrínsecamente diferentes de cualquier otro punto de la esfera. En los polos (latitudes +90° y −90°), la longitud deja de tener sentido.

Se puede demostrar que ningún sistema de coordenadas de dos parámetros puede evitar tal degeneración. Podemos evitar tales problemas incrustando la esfera en el espacio tridimensional y parametrizándola con tres coordenadas cartesianas ( w ,  x ,  y ) , colocando el polo norte en ( w ,  x ,  y ) = (1, 0, 0) , el polo sur en ( w ,  x ,  y ) = (−1, 0, 0) , y el ecuador en w = 0 , x 2 + y 2 = 1 . Los puntos en la esfera satisfacen la restricción w 2 + x 2 + y 2 = 1 , por lo que todavía tenemos solo dos grados de libertad aunque hay tres coordenadas. Un punto ( w ,  x ,  y ) en la esfera representa una rotación en el espacio ordinario alrededor del eje horizontal dirigido por el vector ( x ,  y , 0) por un ángulo . α = 2 cos 1 w = 2 sin 1 x 2 + y 2 {\displaystyle \alpha =2\cos ^{-1}w=2\sin ^{-1}{\sqrt {x^{2}+y^{2}}}}

De la misma manera, el espacio hiperesférico de rotaciones 3D puede parametrizarse mediante tres ángulos ( ángulos de Euler ), pero cualquier parametrización de este tipo es degenerada en algunos puntos de la hiperesfera, lo que conduce al problema del bloqueo del cardán . Podemos evitarlo utilizando cuatro coordenadas euclidianas w ,  x ,  y ,  z , con w2 + x2 + y2 + z2 = 1. El punto ( w ,  x ,  y ,  z ) representa una rotación alrededor del eje dirigido por el vector ( x ,  y ,  z ) por un ángulo α = 2 cos 1 w = 2 sin 1 x 2 + y 2 + z 2 . {\displaystyle \alpha =2\cos ^{-1}w=2\sin ^{-1}{\sqrt {x^{2}+y^{2}+z^{2}}}.}

Explicando las propiedades de los cuaterniones con rotaciones

No conmutatividad

Rotación no conmutativa de dados

La multiplicación de cuaterniones no es conmutativa . Este hecho explica cómo la fórmula pq p q −1 puede funcionar, teniendo q q −1 = 1 por definición. Dado que la multiplicación de cuaterniones unitarios corresponde a la composición de rotaciones tridimensionales, esta propiedad se puede hacer intuitiva mostrando que las rotaciones tridimensionales no son conmutativas en general.

La figura de la derecha ilustra esto con dados. Use su mano derecha para crear un par de rotaciones de 90 grados. Ambos dados están configurados inicialmente como se muestra en la esquina superior izquierda (con 1 punto en la cara superior). La ruta A comienza con una rotación sobre el eje –y (usando la regla de la mano derecha .), seguida de una rotación sobre el eje +z , lo que da como resultado la configuración que se muestra en la esquina inferior izquierda (5 puntos en la cara superior). La ruta B invierte el orden de las operaciones, lo que da como resultado 3 puntos en la parte superior.

Si no tienes dados, coloca dos libros uno al lado del otro. Gira uno de ellos 90 grados en el sentido de las agujas del reloj alrededor del eje z y luego gíralo 180 grados alrededor del eje x . Toma el otro libro, gíralo 180° primero alrededor del eje x y 90° en el sentido de las agujas del reloj alrededor del eje z después. Los dos libros no terminan paralelos. Esto demuestra que, en general, la composición de dos rotaciones diferentes alrededor de dos ejes espaciales distintos no conmuta.

Orientación

El producto vectorial , utilizado para definir la representación eje-ángulo, confiere una orientación ("lateralidad") al espacio: en un espacio vectorial tridimensional, los tres vectores en la ecuación a  ×  b = c siempre formarán un conjunto diestro (o zurdo, dependiendo de cómo se defina el producto vectorial), fijando así una orientación en el espacio vectorial. Alternativamente, la dependencia de la orientación se expresa haciendo referencia a tal que especifica una rotación con respecto a los vectores axiales . En el formalismo cuaterniónico, la elección de una orientación del espacio corresponde al orden de multiplicación: ij = k pero ji = − k . Si se invierte la orientación, entonces la fórmula anterior se convierte en pq −1 p q , es decir, una unidad q se reemplaza con el cuaternión conjugado, el mismo comportamiento que para los vectores axiales. u {\displaystyle {\vec {u}}}

Convenciones alternativas

Se informa [16] que la existencia y el uso continuo de una convención de cuaterniones alternativa en la comunidad aeroespacial y, en menor medida, en la robótica está generando un costo significativo y continuo [ sic ]. Esta convención alternativa es propuesta por Shuster MD en [17] y se aparta de la tradición al invertir la definición para multiplicar elementos de base de cuaterniones de modo que bajo la convención de Shuster, mientras que la definición de Hamilton es . Esta convención también se conoce como "convención JPL" por su uso en algunas partes del Laboratorio de Propulsión a Chorro de la NASA . i j = k {\displaystyle \mathbf {i} \mathbf {j} =-\mathbf {k} } i j = k {\displaystyle \mathbf {i} \mathbf {j} =\mathbf {k} }

Según la convención de Shuster, la fórmula para multiplicar dos cuaterniones se modifica de tal manera que

( r 1 ,   v 1 ) ( r 2 ,   v 2 ) = ( r 1 r 2 v 1 v 2 ,   r 1 v 2 + r 2 v 1 v 1 × v 2 ) , (Alternative convention, usage discouraged!) {\displaystyle \left(r_{1},\ {\vec {v}}_{1}\right)\left(r_{2},\ {\vec {v}}_{2}\right)=\left(r_{1}r_{2}-{\vec {v}}_{1}\cdot {\vec {v}}_{2},\ r_{1}{\vec {v}}_{2}+r_{2}{\vec {v}}_{1}\mathbin {\color {red}\mathbf {-} } {\vec {v}}_{1}\times {\vec {v}}_{2}\right),\qquad {\text{(Alternative convention, usage discouraged!)}}}

La fórmula para rotar un vector por un cuaternión se modifica para ser

p alt = ( v v + q r 2 I 2 q r [ v ] × + [ v ] × 2 ) p (Alternative convention, usage discouraged!) =   ( I 2 q r [ v ] × + 2 [ v ] × 2 ) p {\displaystyle {\begin{aligned}\mathbf {p} '_{\text{alt}}={}&(\mathbf {v} \otimes \mathbf {v} +q_{r}^{2}\mathbf {I} \mathbin {\color {red}\mathbf {-} } 2q_{r}[\mathbf {v} ]_{\times }+[\mathbf {v} ]_{\times }^{2})\mathbf {p} &{\text{(Alternative convention, usage discouraged!)}}\\=&\ (\mathbf {I} \mathbin {\color {red}\mathbf {-} } 2q_{r}[\mathbf {v} ]_{\times }+2[\mathbf {v} ]_{\times }^{2})\mathbf {p} &\end{aligned}}}

Para identificar los cambios bajo la convención de Shuster, vea que el signo antes del producto vectorial se invierte de más a menos.

Finalmente, la fórmula para convertir un cuaternión en una matriz de rotación se modifica para que sea

R a l t = I 2 q r [ v ] × + 2 [ v ] × 2 (Alternative convention, usage discouraged!) = [ 1 2 s ( q j 2 + q k 2 ) 2 ( q i q j + q k q r ) 2 ( q i q k q j q r ) 2 ( q i q j q k q r ) 1 2 s ( q i 2 + q k 2 ) 2 ( q j q k + q i q r ) 2 ( q i q k + q j q r ) 2 ( q j q k q i q r ) 1 2 s ( q i 2 + q j 2 ) ] {\displaystyle {\begin{aligned}\mathbf {R} _{alt}&=\mathbf {I} \mathbin {\color {red}\mathbf {-} } 2q_{r}[\mathbf {v} ]_{\times }+2[\mathbf {v} ]_{\times }^{2}\qquad {\text{(Alternative convention, usage discouraged!)}}\\&={\begin{bmatrix}1-2s(q_{j}^{2}+q_{k}^{2})&2(q_{i}q_{j}+q_{k}q_{r})&2(q_{i}q_{k}-q_{j}q_{r})\\2(q_{i}q_{j}-q_{k}q_{r})&1-2s(q_{i}^{2}+q_{k}^{2})&2(q_{j}q_{k}+q_{i}q_{r})\\2(q_{i}q_{k}+q_{j}q_{r})&2(q_{j}q_{k}-q_{i}q_{r})&1-2s(q_{i}^{2}+q_{j}^{2})\end{bmatrix}}\end{aligned}}}

que es exactamente la transpuesta de la matriz de rotación convertida bajo la convención tradicional.

Aplicaciones de software por convención utilizada

La siguiente tabla agrupa las aplicaciones según su adhesión a cada convención de cuaterniones: [16]

Convención de multiplicación de HamiltonConvención de multiplicación de Shuster
  • Biblioteca matemática Microsoft DirectX

Si bien el uso de cualquiera de las convenciones no afecta la capacidad o corrección de las aplicaciones así creadas, los autores de [16] argumentaron que la convención de Shuster debería abandonarse porque se aleja de la mucho más antigua convención de multiplicación de cuaterniones de Hamilton y es posible que nunca sea adoptada por las áreas de física matemática o teórica.

Comparación con otras representaciones de rotaciones

Ventajas de los cuaterniones

La representación de una rotación como un cuaternión (4 números) es más compacta que la representación como una matriz ortogonal (9 números). Además, para un eje y un ángulo dados, se puede construir fácilmente el cuaternión correspondiente y, a la inversa, para un cuaternión dado se puede leer fácilmente el eje y el ángulo. Ambas cosas son mucho más difíciles con matrices o ángulos de Euler .

En los videojuegos y otras aplicaciones, a menudo se busca una "rotación suave", es decir, que la escena gire lentamente y no en un solo paso. Esto se puede lograr eligiendo una curva como la interpolación lineal esférica en los cuaterniones, con un punto final que es la transformación de identidad 1 (o alguna otra rotación inicial) y el otro que es la rotación final deseada. Esto es más problemático con otras representaciones de rotaciones.

Al componer varias rotaciones en una computadora, los errores de redondeo necesariamente se acumulan. Un cuaternión ligeramente desviado sigue representando una rotación después de ser normalizado: una matriz ligeramente desviada puede dejar de ser ortogonal y es más difícil volver a convertirla en una matriz ortogonal adecuada.

Los cuaterniones también evitan un fenómeno llamado bloqueo del cardán que puede producirse cuando, por ejemplo, en sistemas rotacionales de cabeceo/guiñada/balanceo , el cabeceo se gira 90° hacia arriba o hacia abajo, de modo que la guiñada y el balanceo corresponden entonces al mismo movimiento, y se pierde un grado de libertad de rotación. En un sistema de navegación inercial aeroespacial basado en cardán , por ejemplo, esto podría tener resultados desastrosos si la aeronave está en un picado o ascenso pronunciado.

Conversión hacia y desde la representación matricial

De un cuaternión a una matriz ortogonal

La matriz ortogonal correspondiente a una rotación por el cuaternión unitario z = a + b i + c j + d k (con | z | = 1 ) cuando se post-multiplica con un vector columna está dada por

R = ( a 2 + b 2 c 2 d 2 2 b c 2 a d 2 b d + 2 a c 2 b c + 2 a d a 2 b 2 + c 2 d 2 2 c d 2 a b 2 b d 2 a c 2 c d + 2 a b a 2 b 2 c 2 + d 2 ) . {\displaystyle R={\begin{pmatrix}a^{2}+b^{2}-c^{2}-d^{2}&2bc-2ad&2bd+2ac\\2bc+2ad&a^{2}-b^{2}+c^{2}-d^{2}&2cd-2ab\\2bd-2ac&2cd+2ab&a^{2}-b^{2}-c^{2}+d^{2}\\\end{pmatrix}}.}

Esta matriz de rotación se utiliza en el vector w como . La representación cuaternial de esta rotación viene dada por: w rotated = R w {\displaystyle w_{\text{rotated}}=R\cdot w}

[ 0 w rotated ] = z [ 0 w ] z , {\displaystyle {\begin{bmatrix}0\\w_{\text{rotated}}\end{bmatrix}}=z{\begin{bmatrix}0\\w\end{bmatrix}}z^{*},}

donde es el conjugado del cuaternión , dado por z {\displaystyle z^{*}} z {\displaystyle z} z = a b i c j d k {\displaystyle \mathbf {z} ^{*}=a-b\mathbf {i} -c\mathbf {j} -d\mathbf {k} }

Además, la multiplicación de cuaterniones se define como (asumiendo que a y b son cuaterniones, como z arriba):

a b = ( a 0 b 0 a b ; a 0 b + b 0 a + a × b ) {\displaystyle ab=\left(a_{0}b_{0}-{\vec {a}}\cdot {\vec {b}};a_{0}{\vec {b}}+b_{0}{\vec {a}}+{\vec {a}}\times {\vec {b}}\right)}

donde el orden a , b es importante ya que el producto vectorial de dos vectores no es conmutativo.

Un cálculo más eficiente en el que no es necesario normalizar el cuaternión se da en [20].

R = ( 1 c c d d b c a d b d + a c b c + a d 1 b b d d c d a b b d a c c d + a b 1 b b c c ) , {\displaystyle R={\begin{pmatrix}1-cc-dd&bc-ad&bd+ac\\bc+ad&1-bb-dd&cd-ab\\bd-ac&cd+ab&1-bb-cc\\\end{pmatrix}},}

donde se han definido las siguientes magnitudes intermedias:

    s = 2 / ( a a + b b + c c + d d ) , b s = b s , c s = c s , d s = d s , a b = a b s , a c = a c s , a d = a d s , b b = b b s , b c = b c s , b d = b d s , c c = c c s , c d = c d s , d d = d d s . {\displaystyle {\begin{alignedat}{2}&\ \ s=2/(a\cdot a+b\cdot b+c\cdot c+d\cdot d),\\&{\begin{array}{lll}bs=b\cdot s,&cs=c\cdot s,&ds=d\cdot s,\\ab=a\cdot bs,&ac=a\cdot cs,&ad=a\cdot ds,\\bb=b\cdot bs,&bc=b\cdot cs,&bd=b\cdot ds,\\cc=c\cdot cs,&cd=c\cdot ds,&dd=d\cdot ds.\\\end{array}}\end{alignedat}}}

De una matriz ortogonal a un cuaternión

Hay que tener cuidado al convertir una matriz de rotación en un cuaternión, ya que varios métodos sencillos tienden a ser inestables cuando la traza (suma de los elementos diagonales) de la matriz de rotación es cero o muy pequeña. Para conocer un método estable de conversión de una matriz ortogonal en un cuaternión, consulte Matriz de rotación#Cuaternión .

Ajuste de cuaterniones

La sección anterior describió cómo recuperar un cuaternión q de una matriz de rotación de 3 × 3 Q . Sin embargo, supongamos que tenemos una matriz Q que no es una rotación pura (debido a errores de redondeo , por ejemplo) y deseamos encontrar el cuaternión q que represente a Q con mayor precisión . En ese caso, construimos una matriz simétrica de 4 × 4

K = 1 3 [ Q x x Q y y Q z z Q y x + Q x y Q z x + Q x z Q z y Q y z Q y x + Q x y Q y y Q x x Q z z Q z y + Q y z Q x z Q z x Q z x + Q x z Q z y + Q y z Q z z Q x x Q y y Q y x Q x y Q z y Q y z Q x z Q z x Q y x Q x y Q x x + Q y y + Q z z ] , {\displaystyle K={\frac {1}{3}}{\begin{bmatrix}Q_{xx}-Q_{yy}-Q_{zz}&Q_{yx}+Q_{xy}&Q_{zx}+Q_{xz}&Q_{zy}-Q_{yz}\\Q_{yx}+Q_{xy}&Q_{yy}-Q_{xx}-Q_{zz}&Q_{zy}+Q_{yz}&Q_{xz}-Q_{zx}\\Q_{zx}+Q_{xz}&Q_{zy}+Q_{yz}&Q_{zz}-Q_{xx}-Q_{yy}&Q_{yx}-Q_{xy}\\Q_{zy}-Q_{yz}&Q_{xz}-Q_{zx}&Q_{yx}-Q_{xy}&Q_{xx}+Q_{yy}+Q_{zz}\end{bmatrix}},}

y encontrar el vector propio ( x ,  y ,  z ,  w ) correspondiente al valor propio más grande (ese valor será 1 si y solo si Q es una rotación pura). El cuaternión así obtenido corresponderá a la rotación más cercana a la matriz original Q [ dudosodiscutir ] . [21]

Comparaciones de rendimiento

En esta sección se analizan las implicaciones de rendimiento del uso de cuaterniones en comparación con otros métodos (matrices de eje/ángulo o rotación) para realizar rotaciones en 3D.

Resultados

Requisitos de almacenamiento
MétodoAlmacenamiento
Matriz de rotación9 o 6 (ver abajo)
Cuaternio4 o 3 (ver abajo)
Ángulo–eje4 o 3 (ver abajo)

Solo tres de los componentes del cuaternión son independientes, ya que una rotación se representa mediante un cuaternión unitario. Para realizar cálculos adicionales, normalmente se necesitan los cuatro elementos, por lo que todos los cálculos supondrían un gasto adicional al recuperar el cuarto componente. Del mismo modo, el eje-ángulo se puede almacenar en un vector de tres componentes multiplicando la dirección unitaria por el ángulo (o una función del mismo), pero esto supone un coste computacional adicional cuando se utiliza para los cálculos. De forma similar, una matriz de rotación requiere vectores de base ortogonales, por lo que en el espacio 3D el tercer vector se puede calcular de forma inequívoca a partir de los dos primeros vectores con un producto vectorial (aunque existe una ambigüedad en el signo del tercer vector si se permiten rotaciones impropias ).

Comparación del rendimiento de las operaciones de encadenamiento de rotación
Método# se multiplica# suma/restaoperaciones totales
Matrices de rotación271845
Cuaterniones161228
Comparación del rendimiento de las operaciones de rotación de vectores [22] [23]
Método# se multiplica# suma/resta# seno/cosenooperaciones totales
Matriz de rotación96015
Cuaterniones *Sin matriz intermedia1515030
Con matriz intermedia2118039
Ángulo–ejeSin matriz intermedia1813230 + 3
Con matriz intermedia2116237 + 2

* Los cuaterniones se pueden convertir implícitamente en una matriz tipo rotación (12 multiplicaciones y 12 adiciones/restas), que nivela los siguientes vectores que rotan el costo con el método de la matriz de rotación.

Métodos utilizados

Hay tres enfoques básicos para rotar un vector v :

  1. Calcular el producto matricial de una matriz de rotación R de 3 × 3 y la matriz de columnas original de 3 × 1 que representa v . Esto requiere 3 × (3 multiplicaciones + 2 adiciones) = 9 multiplicaciones y 6 adiciones, el método más eficiente para rotar un vector.
  2. Una rotación se puede representar mediante un cuaternión de longitud unitaria q = ( w ,  r ) con parte escalar (real) w y parte vectorial (imaginaria) r . La rotación se puede aplicar a un vector 3D v mediante la fórmula . Esto requiere solo 15 multiplicaciones y 15 adiciones para evaluar (o 18 multiplicaciones y 12 adiciones si el factor de 2 se realiza mediante multiplicación). Esta fórmula, originalmente pensada para usarse con notación de eje/ángulo (fórmula de Rodrigues), también se puede aplicar a la notación de cuaterniones. Esto produce el mismo resultado que la fórmula menos eficiente pero más compacta de multiplicación de cuaterniones . v new = v + 2 r × ( r × v + w v ) {\displaystyle {\vec {v}}_{\text{new}}={\vec {v}}+2{\vec {r}}\times ({\vec {r}}\times {\vec {v}}+w{\vec {v}})} v new = q v q 1 {\displaystyle {\vec {v}}_{\text{new}}=q{\vec {v}}q^{-1}}
  3. Utilice la fórmula de ángulo/eje para convertir un ángulo/eje en una matriz de rotación R y luego multiplíquela con un vector o, de manera similar, utilice una fórmula para convertir la notación de cuaternión en una matriz de rotación y luego multiplíquela con un vector. Convertir el ángulo/eje a R cuesta 12 multiplicaciones, 2 llamadas de función (sin, cos) y 10 sumas/restas; del elemento 1, rotar usando R agrega 9 multiplicaciones y 6 sumas adicionales para un total de 21 multiplicaciones, 16 sumas/restas y 2 llamadas de función (sin, cos). Convertir un cuaternión a R cuesta 12 multiplicaciones y 12 sumas/restas; del elemento 1, rotar usando R agrega 9 multiplicaciones y 6 sumas adicionales para un total de 21 multiplicaciones y 18 sumas/restas.
Comparación del rendimiento de n operaciones de rotación de vectores
Método# se multiplica# suma/resta# seno/cosenooperaciones totales
Matriz de rotación9 n6 n015 n
Cuaterniones *Sin matriz intermedia15 n15 n030 n
Con matriz intermedia9n + 126n + 12015n + 24
Ángulo–ejeSin matriz intermedia18 n12n + 1230n + 3
Con matriz intermedia9n + 126n + 10215n + 24

Pares de cuaterniones unitarios como rotaciones en el espacio 4D

Un par de cuaterniones unitarios z l y z r pueden representar cualquier rotación en el espacio 4D . Dado un vector cuatridimensional v , y suponiendo que es un cuaternión, podemos rotar el vector v de la siguiente manera:

f ( v ) = z l v z r = ( a l b l c l d l b l a l d l c l c l d l a l b l d l c l b l a l ) ( w x y z ) ( a r b r c r d r b r a r d r c r c r d r a r b r d r c r b r a r ) . {\displaystyle f\left({\vec {v}}\right)=\mathbf {z} _{\rm {l}}{\vec {v}}\mathbf {z} _{\rm {r}}={\begin{pmatrix}a_{\rm {l}}&-b_{\rm {l}}&-c_{\rm {l}}&-d_{\rm {l}}\\b_{\rm {l}}&a_{\rm {l}}&-d_{\rm {l}}&c_{\rm {l}}\\c_{\rm {l}}&d_{\rm {l}}&a_{\rm {l}}&-b_{\rm {l}}\\d_{\rm {l}}&-c_{\rm {l}}&b_{\rm {l}}&a_{\rm {l}}\end{pmatrix}}{\begin{pmatrix}w\\x\\y\\z\end{pmatrix}}{\begin{pmatrix}a_{\rm {r}}&-b_{\rm {r}}&-c_{\rm {r}}&-d_{\rm {r}}\\b_{\rm {r}}&a_{\rm {r}}&d_{\rm {r}}&-c_{\rm {r}}\\c_{\rm {r}}&-d_{\rm {r}}&a_{\rm {r}}&b_{\rm {r}}\\d_{\rm {r}}&c_{\rm {r}}&-b_{\rm {r}}&a_{\rm {r}}\end{pmatrix}}.}

El par de matrices representa una rotación de . Nótese que, dado que , las dos matrices deben conmutar. Por lo tanto, hay dos subgrupos conmutativos del grupo de rotaciones de cuatro dimensiones. Las rotaciones arbitrarias de cuatro dimensiones tienen 6 grados de libertad; cada matriz representa 3 de esos 6 grados de libertad. R 4 {\displaystyle \mathbb {R} ^{4}} ( z l v ) z r = z l ( v z r ) {\displaystyle (\mathbf {z} _{\rm {l}}{\vec {v}})\mathbf {z} _{\rm {r}}=\mathbf {z} _{\rm {l}}({\vec {v}}\mathbf {z} _{\rm {r}})}

Dado que los generadores de las rotaciones de cuatro dimensiones se pueden representar mediante pares de cuaterniones (como sigue), también se pueden representar todas las rotaciones de cuatro dimensiones.

z l v z r = ( 1 d t a b d t a c d t a d d t a b 1 d t b c d t b d d t a c d t b c 1 d t c d d t a d d t b d d t c d 1 ) ( w x y z ) z l = 1 + d t a b + d t c d 2 i + d t a c d t b d 2 j + d t a d + d t b c 2 k z r = 1 + d t a b d t c d 2 i + d t a c + d t b d 2 j + d t a d d t b c 2 k {\displaystyle {\begin{aligned}\mathbf {z} _{\rm {l}}{\vec {v}}\mathbf {z} _{\rm {r}}&={\begin{pmatrix}1&-dt_{ab}&-dt_{ac}&-dt_{ad}\\dt_{ab}&1&-dt_{bc}&-dt_{bd}\\dt_{ac}&dt_{bc}&1&-dt_{cd}\\dt_{ad}&dt_{bd}&dt_{cd}&1\end{pmatrix}}{\begin{pmatrix}w\\x\\y\\z\end{pmatrix}}\\[3pt]\mathbf {z} _{\rm {l}}&=1+{dt_{ab}+dt_{cd} \over 2}i+{dt_{ac}-dt_{bd} \over 2}j+{dt_{ad}+dt_{bc} \over 2}k\\[3pt]\mathbf {z} _{\rm {r}}&=1+{dt_{ab}-dt_{cd} \over 2}i+{dt_{ac}+dt_{bd} \over 2}j+{dt_{ad}-dt_{bc} \over 2}k\end{aligned}}}

Véase también

Referencias

  1. ^ Shoemake, Ken (1985). "Animación de la rotación con curvas de cuaternión" (PDF) . Gráficos por ordenador . 19 (3): 245–254. doi :10.1145/325165.325242.Presentado en SIGGRAPH '85.
  2. ^ JM McCarthy, 1990, Introducción a la cinemática teórica, MIT Press
  3. ^ Amnon Katz (1996) Dinámica computacional de vehículos rígidos , Krieger Publishing Co. ISBN 978-1575240169 
  4. ^ JB Kuipers (1999) Cuaterniones y secuencias de rotación: una introducción con aplicaciones a las órbitas, el espacio aéreo y la realidad virtual , Princeton University Press ISBN 978-0-691-10298-6 
  5. ^ Karsten Kunze, Helmut Schaeben (noviembre de 2004). "La distribución de Bingham de cuaterniones y su transformada esférica de radón en el análisis de textura". Geología matemática . 36 (8): 917–943. doi :10.1023/B:MATG.0000048799.56445.59. S2CID  55009081.
  6. ^ Geometría euclidiana y no euclidiana. Patrick J. Ryan, Cambridge University Press, Cambridge, 1987.
  7. ^ IL Kantor. Números hipercomplejos, Springer-Verlag, Nueva York, 1989.
  8. ^ Andrew J. Hanson. Visualización de cuaterniones, Morgan Kaufmann Publishers, Ámsterdam, 2006.
  9. ^ JH Conway y DA Smith. Sobre cuaterniones y octoniones, AK Peters, Natick, MA, 2003.
  10. ^ "Preguntas frecuentes sobre comp.graphics.algorithms" . Consultado el 2 de julio de 2017 .
  11. ^ Rodrigues, O. (1840), Des lois géométriques qui régissent les déplacements d'un système solide dans l'espace, et la variación des coordonnées provenant de ses déplacements considérés indépendamment des cause qui peuvent les produire, Journal de Mathématiques Pures et Appliquées de Liouville 5, 380–440.
  12. ^ William Rowan Hamilton (1844 a 1850) Sobre cuaterniones o un nuevo sistema de imaginarios en álgebra, Philosophical Magazine , enlace a la colección de David R. Wilkins en Trinity College, Dublín
  13. ^ Lee, Byung-Uk (1991), "Diferenciación con cuaterniones, Apéndice B" (PDF) , Stereo Matching of Skull Landmarks (Tesis doctoral), Universidad de Stanford, págs. 57-58
  14. ^ Altmann, Simon L. (1989). "Hamilton, Rodrigues y el escándalo de los cuaterniones". Revista de matemáticas . 62 (5): 306. doi :10.2307/2689481. JSTOR  2689481.
  15. ^ Simon L. Altman (1986) Rotaciones, cuaterniones y grupos dobles , Dover Publications (véase especialmente el capítulo 12).
  16. ^ abc Sommer, H. (2018), "Por qué y cómo evitar la multiplicación de cuaterniones invertidos", Aerospace , 5 (3): 72, arXiv : 1801.07478 , Bibcode :2018Aeros...5...72S, doi : 10.3390/aerospace5030072 , ISSN  2226-4310
  17. ^ Shuster, MD (1993), "Un estudio de las representaciones de actitudes", Journal of the Astronautical Sciences , 41 (4): 439–517, Bibcode :1993JAnSc..41..439S, ISSN  0021-9142
  18. ^ "Caja de herramientas aeroespacial de MATLAB cuatrimotor".
  19. ^ La caja de herramientas aeroespacial de MATLAB utiliza la convención de multiplicación de Hamilton, sin embargo, debido a que aplica rotaciones *pasivas* en lugar de *activas*, los cuaterniones enumerados son en efecto rotaciones activas que utilizan la convención de Shuster. [18]
  20. ^ Alan Watt y Mark Watt (1992) Técnicas avanzadas de animación y renderizado: teoría y práctica , ACM Press ISBN 978-0201544121 
  21. ^ Bar-Itzhack, Itzhack Y. (noviembre-diciembre de 2000), "Nuevo método para extraer el cuaternión de una matriz de rotación", Journal of Guidance, Control and Dynamics , 23 (6): 1085–1087, Bibcode :2000JGCD...23.1085B, doi :10.2514/2.4654, ISSN  0731-5090
  22. ^ Eberly, D., Representaciones de rotación y problemas de rendimiento
  23. ^ "Bitbucket". bitbucket.org .

Lectura adicional

  • Grubin, Carl (1970). "Derivación del esquema de cuaterniones a través del eje y ángulo de Euler". Journal of Spacecraft and Rockets . 7 (10): 1261–1263. Bibcode :1970JSpRo...7.1261G. doi :10.2514/3.30149.
  • Battey-Pratt, EP; Racey, TJ (1980). "Modelo geométrico para partículas fundamentales". Revista internacional de física teórica . 19 (6): 437–475. Código Bibliográfico :1980IJTP...19..437B. doi :10.1007/BF00671608. S2CID  120642923.
  • Arribas, M.; Elipe, A.; Palacios, M. (2006). "Cuaterniones y rotaciones de un cuerpo rígido". Celest. Mech. Dyn. Astron . 96 (3–4): 239–251. Bibcode :2006CeMDA..96..239A. doi :10.1007/s10569-006-9037-6. S2CID  123591599.
  • Shoemake, Ken. "Cuaterniones" (PDF) . Archivado (PDF) del original el 3 de mayo de 2020.
  • "Tipo cuaternión simple y operaciones en más de setenta y cinco lenguajes de computación".sobre el código Rosetta
  • Hart, John C. "Demostrador de cuaterniones".
  • Dam, Eik B.; Koch, Martin; Lillholm, Martin (1998). "Cuaterniones, interpolación y animación" (PDF) .
  • Leandra, Vicci (2001). "Cuaterniones y rotaciones en el espacio tridimensional: el álgebra y su interpretación geométrica" ​​(PDF) .
  • Howell, Thomas; Lafon, Jean-Claude (1975). "La complejidad del producto cuaternión TR75-245" (PDF) . Universidad de Cornell.
  • Horn, Berthold KP (2001). "Algunas notas sobre cuaterniones unitarios y rotación" (PDF) .
  • Lee, Byung-Uk (1991). Representación de la rotación mediante cuaterniones unitarios. Apéndice A. Diferenciación con cuaterniones. Apéndice B (PDF) (tesis doctoral). Universidad de Stanford.
  • Vance, Rod. "Algunos ejemplos de grupos de Lie conectados". Archivado desde el original el 15 de diciembre de 2018.
  • "Representación visual de la rotación del cuaternión".
Retrieved from "https://en.wikipedia.org/w/index.php?title=Quaternions_and_spatial_rotation&oldid=1252067116"