Revista   1 2 3 4  


Cuaterniones y Ángulos de Euler

En MATHEMATICA, la rotación de un objeto tridimensional se puede hacer con RotateShape[obj, $ \alpha$,$ \theta$,$ \psi$ ] con $ \theta$ $ \in$ [0,$ \pi$]. La rotación dada por los ángulos de Euler $ \alpha$,$ \theta$ y $ \psi$ puede ser descompuesta en una sucesión de tres rotaciones sucesivas. La primera rota un ángulo $ \alpha$ alrededor del eje Z, la segunda rota un ángulo $ \theta$ alrededor del eje X y la tercera rota un ángulo $ \psi$ alrededor del eje Z nuevamente. RotateShape[ ] determina la matriz de rotación correspondiente y la aplica a todas los puntos del objeto geometrico. El comando RotationMatrix3D[ $ \alpha$,$ \theta$,$ \psi$ ] da la matriz de rotación correspondiente a las tres rotaciones sucesivas determinadas por los ángulos de Euler.

El problema es: dado $ \phi$ y u, cuál es la relación entre los ángulos de Euler y $ \phi$ y u?. La relación más sencilla se obtiene usando quaterniones.

Los quaterniones son objetos [a,v], donde a es un escalar y v $ \in$ IR3.

$ \bullet$   La suma y la multiplicación (no commutativa) de quaterniones se define así:

$ \bullet$   [a1,v] + [a2,u] = [a1 + a2v + u]

$ \bullet$   [a1,v][a2,u] = [a1a2  -  v . u,  a1u + a2v + u×v]

$ \bullet$   La norma de un quaternion se define como ||[a, v]|| = $ \sqrt{a^2+ v \cdot v}$

$ \bullet$   Si 1l = [1,(0, 0, 0)] entonces [a, v]1l = 1l[a, v].

$ \bullet$   [a, v]- 1=$\displaystyle {\frac{[a,-v]}{\vert\vert[a,v]\vert\vert^2}}$, i.e. [a, v][a, v]- 1 = 1l



Con esta álgebra se puede mostrar que un vector v puede ser rotado alrededor de un eje aplicando la operación qvq- 1. Lo que hacemos es, abusando del lenguaje, identificar v con [0, v]. De esta manera, si u = {u1, u2, u3} (unitario), si  q = [cos($ \phi$/2), sen($ \phi$/2)u] y si [0,v']  =  q [0, vq- 1, se tiene que v' es una rotación de v, de ángulo $ \phi$, alrededor de u.

Con este último resultado podemos determinar una relación entre los ángulos de Euler y una rotación de ángulo $ \phi$, alrededor de u. Para esto, ponemos las rotaciones correspondientes a los ángulos de Euler en lenguaje de quaterniones e igualamos:

[cos($ \phi$/2), sen($ \phi$/2)u] = [cos($ \alpha$/2), sen($ \alpha$/2)k] [cos($ \theta$/2), sen($ \theta$/2)j] [cos($ \psi$/2), sen($ \psi$/2)k]

luego, desarrollando la multiplicación de la derecha e igualando, se obtiene

cos($ \phi$/2) = cos($ \theta$/2) cos$ {\frac{1}{2}}$($ \alpha$ + $ \psi$)
u1 = - (sen$ {\frac{1}{2}}$$ \phi$)-1 sen$ {\frac{1}{2}}$$ \theta$ sen$ {\frac{1}{2}}$($ \alpha$ - $ \psi$)
u2 = (sen$ {\frac{1}{2}}$$ \phi$)-1 sen$ {\frac{1}{2}}$$ \theta$ cos$ {\frac{1}{2}}$($ \alpha$ - $ \psi$)
u3 = (sen$ {\frac{1}{2}}$$ \phi$)-1 cos$ {\frac{1}{2}}$$ \theta$ sen$ {\frac{1}{2}}$($ \alpha$ + $ \psi$)

Esto nos dice que, en general, para hacer animaciones que involucran rotaciones de objetos tridimensionales alrededor de una recta, es mejor usar una implementación matricial (o en términos de quaterniones).

Bibliografía
 
1
Adams A; Rogers, D. ``Mathematical Elements for Computer Graphics". McGraw-Hill, NY, 1990.
2
Altmann, S. ``Rotations, Quaternions and Double Groups". Clarendon Press, Oxford. 1986.
3
Noble, B; Daniel, J.``Algebra Lineal Aplicada".Prentice-Hall. 1989.
4
Vince, J ``3-D Computer Animation". Addison-Wesley, 1992.
5
Wolfram, S. ``The Mathematica Book". 4th ed. Wolfram Media/Cambridge University Press, 1999