Aquí hay una "pequeña" adición a la respuesta de @rschwieb :
Imagina que tienes la siguiente matriz de rotación:
$$ \left[ \begin{array}{ccc} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{array} \right] $$
Al principio se podría pensar que se trata de otra matriz de identidad. Pues bien, sí y no. Esta matriz puede representar una rotación alrededor de los tres ejes en el espacio euclidiano 3D con... cero grados . Esto significa que no se ha producido ninguna rotación alrededor de ninguno de los ejes.
Como sabemos $\cos(0) = 1$ y $\sin(0) = 0$ .
Cada columna de una matriz de rotación representa uno de los ejes del espacio en el que se aplica por lo que si tenemos 2D la matriz de rotación por defecto (es decir, no se ha producido ninguna rotación) es
$$ \left[ \begin{array}{cc} 1 & 0\\ 0 & 1 \end{array} \right] $$
Cada columna de una matriz de rotación representa el estado del eje respectivo, por lo que tenemos aquí lo siguiente:
$$ \left[ \begin{array}{c|c} 1 & 0\\ 0 & 1 \end{array} \right] $$
La primera columna representa el x y el segundo - el y eje. Para el caso 3D tenemos:
$$ \left[ \begin{array}{c|c|c} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{array} \right] $$
Aquí estamos utilizando la base canónica para cada espacio, es decir, estamos utilizando el vectores unitarios para representar cada uno de los 2 o 3 ejes.
Normalmente soy partidario de explicar estas cosas en 2D, pero en 3D es mucho más fácil ver lo que ocurre. Cada vez que queremos rotar alrededor de un eje, básicamente estamos diciendo "El eje alrededor del cual estamos rotando es el ancla y NO va a cambiar. Sin embargo, los otros dos ejes sí lo harán".
Si empezamos con el estado "no ha habido rotación"
$$ \left[ \begin{array}{c|c|c} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{array} \right] $$
y quiere girar alrededor de - digamos - el x eje que haremos
$$ \left[ \begin{array}{c|c|c} 1 & 0 & 0\\ 0 & \cos(\theta) & -\sin(\theta)\\ 0 & \sin(\theta) & \cos(\theta) \end{array} \right] . \left[ \begin{array}{c|c|c} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{array} \right] = \left[ \begin{array}{c|c|c} 1 & 0 & 0\\ 0 & \cos(\theta) & -\sin(\theta)\\ 0 & \sin(\theta) & \cos(\theta) \end{array} \right] $$
Lo que esto significa es:
- El estado de la eje x permanece sin cambios - hemos comenzado con un estado de no rotación por lo que el eje x mantendrá su estado original - el vector unitario $\left[\begin{array}{c}1\\0\\0\end{array}\right]$
- El estado de la ejes y y z ha cambiado: en lugar del original $\left[\begin{array}{c}0\\1\\0\end{array}\right]$ (para y) y $\left[\begin{array}{c}0\\0\\1\end{array}\right]$ (para z) tenemos ahora $\left[\begin{array}{c}0\\\cos(\theta)\\\sin(\theta)\end{array}\right]$ (para la nueva orientación de y) y $\left[\begin{array}{c}0\\-\sin(\theta)\\\cos(\theta)\end{array}\right]$ (para la nueva orientación de z).
Podemos seguir aplicando rotaciones alrededor de este y aquel eje y cada vez ocurrirá esto - el eje alrededor del cual estamos rotando permanece como estaba en el paso anterior y el resto de los ejes cambian en consecuencia.
Ahora cuando se trata de 2D tenemos $$ R(\theta) = \left[ \begin{array}{c|c} \cos(\theta) & -\sin(\theta)\\ \sin(\theta) & \cos(\theta) \end{array} \right] $$
para la rotación en sentido contrario a las agujas del reloj y
$$ R(-\theta) = \left[ \begin{array}{c|c} \cos(\theta) & \sin(\theta)\\ -\sin(\theta) & \cos(\theta) \end{array} \right] $$
para girar en el sentido de las agujas del reloj. Observa que ambos vectores columna son diferentes. Esto se debe a que en 2D ninguno de los dos ejes permanece inactivo y ambos necesitan cambiar para crear una rotación. Por eso también la versión 3D tiene dos de los tres ejes que cambian simultáneamente - porque es sólo una derivada de su versión 2D.
Cuando se trata de girar en el sentido de las agujas del reloj o en sentido contrario a las agujas del reloj, siempre se puede utilizar el regla de la izquierda o de la derecha :
- Utiliza tu mano derecha o izquierda para determinar los ejes:
- Vea cuál es el sentido de las agujas del reloj y cuál es el sentido contrario. En la imagen de abajo el cuatro puntas de los dedos que van directamente a la palma de la mano siempre punto a lo largo de la dirección de rotación ( regla de la mano derecha ):
Una vez que elijas una de las dos manos, quédate con ella y úsala hasta el final de la tarea específica, de lo contrario los resultados probablemente terminarán arruinados. Obsérvese también que esta regla puede aplicarse también a 2D . Sólo hay que quitar (pero no cortar) el dedo que apunta a lo largo del z (o cualquier dimensión de las tres que no necesites) y haz lo tuyo.
Un par de debe saber cosas:
-
La multiplicación de matrices no suele ser conmutativa, lo que significa que $A.B \ne B.A$
-
El orden de rotación está determinado por el orden de multiplicación (debido a 1)) - hay un montón de convenciones de rotación (RPY (roll,pitch and yaw), ángulos de Euler, etc.) por lo que es importante saber cuál está utilizando. Si no estás seguro, escoge una y quédate con ella (es mejor tener un error consistente que 10 errores diferentes que no puedes seguir) (ver aquí para obtener información compacta sobre este tema)
-
La inversa de una matriz de rotación gira en la dirección opuesta - si por ejemplo $R_{x,90}$ es una rotación alrededor del eje x con +90 grados la inversa hará $R_{x,-90}$ . Además, las matrices de rotación son increíbles porque $A^{-1} = A^t$ es decir, la inversa es la misma que la transposición
2 votos
Para la tercera pregunta: Si crees que la matriz para la rotación en sentido contrario a las agujas del reloj es correcta, entonces para obtener la matriz en sentido de las agujas del reloj, sólo tienes que sustituir $\phi$ por $-\phi$ . Las reglas de la trigonometría le dirán entonces que $\cos -\phi = \cos \phi$ y $\sin -\phi = -\sin \phi$ , lo que lleva a la matriz de las agujas del reloj que tienes.