Saltar al contenido

Entendiendo las matrices de rotación

Hola, descubrimos la solución a lo que necesitas, desplázate y la obtendrás más abajo.

Solución:

Aquí hay un adición “pequeña” a la respuesta de @rschwieb:

Imagina que tienes la siguiente matriz de rotación:

$$ left[
beginarrayccc
1 & 0 & 0\
0 & 1 & 0\
0 & 0 & 1
endarray
right]
$$

Al principio, uno podría pensar que esto es solo otra matriz de identidad. Bueno, 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.

Tal como lo conocemos $ 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 espacio la matriz de rotación predeterminada (es decir, no ha ocurrido ninguna rotación) es

$$ left[
beginarraycc
1 & 0\
0 & 1
endarray
right]
$$

Cada columna en una matriz de rotación representa el estado del eje respectivo, por lo que aquí tenemos lo siguiente:

$$ left[
beginarrayc
1 & 0\
0 & 1
endarray
right]
$$

La primera columna representa el X eje y el segundo – el y eje. Para el caso 3D tenemos:

$$ left[
beginarrayc
1 & 0 & 0\
0 & 1 & 0\
0 & 0 & 1
endarray
right]
$$

Aquí estamos usando la base canónica para cada espacio que estamos usando el vectores unitarios para representar cada uno de los 2 o 3 ejes.

Por lo general, soy un fanático de explicar tales cosas en 2D, sin embargo, en 3D es mucho más fácil ver lo que está sucediendo. Siempre que queremos rotar alrededor de un eje, básicamente estamos diciendo “El eje sobre el que estamos girando es el ancla y NO cambiará. Los otros dos ejes, sin embargo, sí”.

Si comenzamos con el estado “no se ha realizado ninguna rotación”

$$ left[
beginarrayc
1 & 0 & 0\
0 & 1 & 0\
0 & 0 & 1
endarray
right]
$$

y quiere rotar, digamos, el X eje haremos

$$ left[
beginarrayc
1 & 0 & 0\
0 & cos(theta) & -sin(theta)\
0 & sin(theta) & cos(theta)
endarray
right] . izquierda[
beginarrayc
1 & 0 & 0\
0 & 1 & 0\
0 & 0 & 1
endarray
right] = izquierda[
beginarrayc
1 & 0 & 0\
0 & cos(theta) & -sin(theta)\
0 & sin(theta) & cos(theta)
endarray
right]
$$

Lo que esto significa es:

  • El estado de la eje x permanece sin cambios: comenzamos con un estado sin rotación, por lo que el eje x conservará su estado original: el vector unitario $ left[beginarrayc1\0\0endarrayright]PS
  • El estado de la eje yy z ha cambiado – en lugar del original $ left[beginarrayc0\1\0endarrayright]PS (para y) y $ left[beginarrayc0\0\1endarrayright]PS (para z) ahora tenemos $ left[beginarrayc0\cos(theta)\sin(theta)endarrayright]PS (para la nueva orientación de y) y $ left[beginarrayc0\-sin(theta)\cos(theta)endarrayright]PS (para la nueva orientación de z).

Podemos seguir aplicando rotaciones alrededor de este y aquel eje y cada vez que esto suceda, el eje sobre el que estamos rotando permanece como estaba en el paso anterior y el resto de los ejes cambia en consecuencia.

Ahora, cuando se trata de 2D, tenemos
$$ R ( theta) = left[
beginarrayc
cos(theta) & -sin(theta)\
sin(theta) & cos(theta)
endarray
right]
$$

para giro en sentido antihorario y

$$ R (- theta) = left[
beginarrayc
cos(theta) & sin(theta)\
-sin(theta) & cos(theta)
endarray
right]
$$

para rotación en el sentido de las agujas del reloj. Observe que ambos vectores de 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. Esta es la razón por la que también la versión 3D tiene dos de los tres ejes que cambian simultáneamente, porque es solo un derivado de su versión 2D.

Cuando se trata de girar en sentido horario o antihorario, siempre puede utilizar el regla de la mano izquierda o derecha:

  1. Utilice su mano derecha o izquierda para determinar los ejes:

ingrese la descripción de la imagen aquí

  1. Vea en qué dirección es el reloj y en qué sentido es en el sentido contrario a las agujas del reloj. En la imagen debajo del 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):

ingrese la descripción de la imagen aquí

Una vez que elija una de las dos manos, quédese con ella y utilícela hasta el final de la tarea específica, de lo contrario, los resultados probablemente terminarán arruinados. Tenga en cuenta también que esta regla también se puede aplicar a 2D. Simplemente retire (pero no corte) el dedo que apunta a lo largo del z eje (o cualquier dimensión de las tres que no necesite) y haga lo suyo.

Una pareja de debe saber cosas:

  1. La multiplicación de matrices generalmente no es conmutativa; lo que esto significa es que $ AB ne BA $

  2. El orden de rotación está determinado por el orden de multiplicación (debido a 1)); hay MUCHAS convenciones de rotación (RPY (balanceo, cabeceo y guiñada), ángulos de Euler, etc.) por lo que es importante saber cuál está utilizando. Si no está seguro, elija uno y apéguese a él (es mejor tener un error consistente que 10 errores diferentes de los que no puede realizar un seguimiento) (consulte aquí para obtener información compacta sobre este tema)

  3. 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 será suficiente $ R_ x, -90 $. Además de eso, las matrices de rotación son increíbles porque $ A ^ – 1 = A ^ t $ que es la inversa es la misma que la transpuesta

Toda la trigonometría quedará clara si examina lo que sucede con los puntos $ (1,0) $ y $ (0,1) $ bajo estas transformaciones. Después de que se hayan movido, coloque una perpendicular verticalmente y una línea a través del origen y considere el triángulo formado. Serán (a veces degenerados) triángulos con hipotenues 1 y luego verás por qué cada uno de sus catetos tiene medida $ sin ( phi) $ o $ cos ( phi) $ etc.

Esto es lo que quiero decir: después de una rotación $ pi / 6 $ en sentido antihorario, el punto $ (1,0) $ se ha movido a $ ( sqrt 3 / 2,1 / 2) $. Este punto, además de $ (0,0) $ y el punto directamente debajo de él en el eje $ x $, $ ( sqrt 3 / 2,0 $ forman un triángulo rectángulo con hipotenusa $ 1 $. Mira las longitudes de los lados cortos del triángulo. Intenta hacer lo mismo con un ángulo $ phi $ entre 0 y $ pi / 2 $, y analiza cuáles deben ser los lados del triángulo en términos de $ sin ( phi) $ y $ cos ( phi) $.

Debido a que una rotación en el plano está totalmente determinada por la forma en que mueve los puntos en el círculo unitario, esto es todo lo que tienes que entender.

En realidad, no necesita una representación para ambos en sentido horario y antihorario. Puede usar el en sentido antihorario todo el tiempo, si está de acuerdo en que una rotación en sentido horario sería una rotación negativa en sentido antihorario. Es decir, si desea realizar una rotación en el sentido de las agujas del reloj de $ pi / 4 $ radianes, entonces debe usar $ phi = – pi / 4 $ en la representación de rotación en el sentido contrario a las agujas del reloj.

El hecho de que $ sin (- phi) = – sin ( phi) $ explica el cambio en el signo del seno entre las dos representaciones, y el hecho de que $ cos ( phi) $ no el cambio se debe a que $ cos (- phi) = cos ( phi) $. También puede elegir el esquema de representación en sentido antihorario y realizar ambos rotaciones en sentido horario y antihorario con él.


Para proporcionar alguna evidencia adicional de que tiene sentido que estas sean matrices de rotación, puede verificar que las columnas de estas matrices siempre tengan una longitud euclidiana 1 (aplicación fácil de $ sin ^ 2 (x) + cos ^ 2 (x ) = 1 $ identidad.) Además, son ortogonales entre sí. Eso significa que son matrices ortogonales y, en consecuencia, representan rotaciones. Satisfacen $ UU ^ T = U ^ TU = I_2 $. Esto demuestra que $ U ^ T = U ^ – 1 $, ¡y ahora notará que la transposición de la representación en sentido antihorario le da la representación en sentido horario! Por supuesto, girar en sentido horario y girar en sentido antihorario $ phi $ radianes son operaciones inversas.

Sección de Reseñas y Valoraciones

Si te ha sido útil nuestro artículo, te agradeceríamos que lo compartas con el resto programadores de esta forma nos ayudas a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *