Cómo probar que cualquier rotación se puede representar mediante 3 ángulos de Euler

¿Cómo se puede probar que cualquier rotación de un objeto rígido en un espacio tridimensional (3D) puede representarse mediante una secuencia de tres rotaciones alrededor de ejes prefijados por 3 ángulos de Euler? Veo esta declaración en muchos libros de texto, pero hasta ahora no encontré una prueba de la declaración.

Entiendo que generalmente se necesitan 3 parámetros para representar la rotación de un objeto 3D (por ejemplo, de Goldstein, Poole y Safko, Classical Mechanics, 3rd Ed. Ch. 4). Sin embargo, no puedo estar seguro de que 3 ángulos de Euler puedan ser tales 3 parámetros.

Por ahora acepto que, para cualquier rotación 3D, existe una única matriz en el grupo SO(3) que transforma las coordenadas de un punto en el objeto rotado. También acepto que tal matriz para la rotación alrededor del z -eje por ángulo α se expresa como

R z ( α ) = ( porque α pecado α 0 pecado α porque α 0 0 0 1 ) ,
y esa rotacion alrededor y -axis tiene una representación matricial similar. Por lo tanto, entiendo que para un determinado A S O ( 3 ) , puedo calcular los ángulos de Euler comparando 3 elementos de A (por ejemplo, algunos de los elementos de la tercera fila y la tercera columna en la convención adoptada a continuación) con el siguiente producto de 3 matrices correspondientes a las rotaciones por 3 ángulos de Euler,
R z ( α ) R y ( β ) R z ( γ ) = ( porque α pecado α 0 pecado α porque α 0 0 0 1 ) ( porque β 0 pecado β 0 1 0 pecado β 0 porque β ) ( porque γ pecado γ 0 pecado γ porque γ 0 0 0 1 ) .
Sin embargo, no puedo estar seguro de si los ángulos de Euler calculados siempre igualan los otros elementos que no se usan en el cálculo.

¿Existe una prueba simple sin pasar por mucha manipulación algebraica?

"¿Cómo se puede probar que cualquier rotación de un objeto rígido en un espacio tridimensional (3D) puede representarse mediante una secuencia de tres rotaciones alrededor de ejes prefijados por 3 ángulos de Euler?" Pero no es así como funcionan las rotaciones de Euler: los ejes de la segunda y tercera rotación (representados por las matrices en la secuencia de matrices anterior) no están preestablecidos, sino que dependen de las rotaciones anteriores. Cf. en.wikipedia.org/wiki/Euler_angles
A veces, los ángulos de Euler fallan cuando tienes un sistema degenerado. Entonces no puede haber una prueba ya que no funcionará para todos los casos. Además, dado que no tiene que usar ángulos de Euler, pero puede usar otros métodos, significa que los ángulos de Euler no son una representación única de rotaciones.
@JohnAlexiou Incluso en el caso degenerado (también conocido como "bloqueo de cardán"), los ángulos de Euler no fallan en el sentido de que no existe una solución. El problema es que la solución no es única en el caso de gimbal lock.
@JánLalinský Esta pregunta se refiere a las secuencias de Euler extrínsecas, una serie de tres rotaciones sobre ejes en el sistema de coordenadas original. Escribiste sobre secuencias intrínsecas de Euler, una serie de tres ejes de rotación que han sido rotados. Están relacionados matemáticamente: simplemente invierte el orden.

Respuestas (3)

Un algoritmo que resuelve para α , β , y γ para cualquier matriz de rotación adecuada de 3 × 3 dada constituye una prueba constructiva.

R z ( α ) R y ( β ) R z ( γ ) = ( porque α pecado α 0 pecado α porque α 0 0 0 1 ) ( porque β 0 pecado β 0 1 0 pecado β 0 porque β ) ( porque γ pecado γ 0 pecado γ porque γ 0 0 0 1 )

Multiplicando esto se obtiene

R z y z = R z ( α ) R y ( β ) R z ( γ ) = ( lío caliente lío caliente porque α pecado β lío caliente lío caliente + pecado α pecado β pecado β porque γ pecado β pecado γ porque β )

Tenga en cuenta que el último elemento de la última fila es porque β . Dada una matriz de rotación adecuada R , uno puede encontrar β tomando el coseno inverso de ese elemento:

β = arccos ( R 3 , 3 )
Tenga en cuenta que los otros dos elementos de la última columna producen una expresión para α , y que los otros dos elementos de la última fila producen una expresión para γ :

α = arcán ( + R 2 , 3 R 1 , 3 ) β = arcán ( + R 3 , 2 + R 3 , 1 )
Deberá usar la versión de dos argumentos de arcán para desambiguar entre (por ejemplo) 60 grados (pi/3) y 240 grados (4/3*pi). No voy a hacer cálculos matemáticos, pero esta solución replica el "desastre" que ignoré.

Hay un problema con esta solución, y es cuando pecado β = 0 . Esto sucede cuando R 3 , 3 es ±1. Los elementos restantes en la última columna y la última fila son idénticos a cero en este caso. Esto se llama "bloqueo de cardán". Mi "lío caliente" se vuelve mucho más simple en este caso:

R z y z = ( ± porque ( α + γ ) ± pecado ( α + γ ) 0 pecado ( α + γ ) porque ( α + γ ) 0 0 0 ± 1 )
Puedes resolver para α + γ en el caso del bloqueo de cardán, pero no existe una solución única para α y γ . Esta bien; simplemente elija un valor arbitrario (normalmente cero) para γ (o α ) y resuelve para el otro dado que puedes resolver para α + γ .


Su secuencia zyz es bastante extraña, en dos aspectos. La secuencia de rotación canónica de Euler es una rotación alrededor de z seguida de una segunda rotación alrededor del eje x rotado una vez seguida de una tercera rotación alrededor del eje z rotado dos veces . La suya es una rotación sobre el eje z inicial , seguida de una segunda rotación sobre el eje y inicial , seguida de una tercera rotación sobre el eje z inicial. Esas son solo dos de las veinticuatro secuencias de rotación diferentes que a menudo se denominan ángulos de Euler. En los veinticuatro casos, encontrarás que

  • Exactamente un elemento de la matriz de rotación es pecado β , pecado β , o porque β , dónde β representa la segunda rotación en la secuencia (que le permite resolver para β ),
  • Que los otros cuatro elementos en la misma fila/misma columna que este elemento especial no son un "lío caliente",
  • Excepto en el caso del bloqueo de cardán, esto produce soluciones únicas para los otros dos elementos de la secuencia de rotación, y
  • En el caso del bloqueo de cardán, puede resolver para α + γ o α γ . En ese caso, elija arbitrariamente un valor para γ (generalmente cero) y podrá encontrar α .
Esto tiene que ser un aparte, porque el enlace que sigue desaparecerá en unos meses cuando Google elimine googlecode.com. Hace siete años se me ocurrió lo que pensé que era un algoritmo inteligente para manejar los 12 ángulos de Euler intrínsecos. Un funcionario de la NASA quería que publicara esto. Hice la búsqueda bibliográfica adecuada y descubrí que no era tan inteligente como pensaba. Un algoritmo muy similar había sido publicado en un texto de gráficos por computadora. Dado que mi solución no era única, las tonterías de ITAR no se aplicaron, y ese funcionario convirtió mi código a Java para usarlo en un concurso de golpes. ...
Agregaría un detalle menor que para β = arccos ( R 3 , 3 ) para darnos un ángulo real β Es necesario que | R 3 , 3 | 1 . Afortunadamente esto está garantizado porque R z y z es una matriz ortonormal.
Si bien el código de Google desapareció hace mucho tiempo, la máquina wayback todavía tiene ese algoritmo: web.archive.org/web/20160103223542/http://… .

Hay una prueba constructiva que se puede entender intuitivamente. Supongo que z es vertical e y es adelante/atrás. Gira el objeto sobre el eje z hasta que la parte superior esté en algún lugar del plano xz, es decir, y=0. Esto hace que la parte superior del objeto apunte perpendicular al eje y, por lo que puede rotar sobre el eje y hasta que apunte hacia arriba. Y ahora solo necesita rotarlo en el eje z hasta que adelante apunte en la dirección correcta.

Si desea saber cuál fue la rotación original, simplemente tome el opuesto de cada uno de esos pasos y póngalos en orden inverso. Por ejemplo, si rotaste 10°, -30°, 50°, entonces para obtener la rotación original de la rotación correcta es solo -50°, 30°, -10°.

Esta secuencia de operaciones siempre se puede realizar independientemente de cómo se oriente un objeto. No es necesariamente único. Si arriba ya está apuntando hacia arriba, entonces estará en el plano correcto sin importar cuánto gire sobre el eje z. Pero el punto es que hay algo de rotación sobre el eje z que lo deja en el plano correcto, que lo hay.

Editar:

Si desea algo estrictamente más matemático, suponga que tiene un marco ortogonal de vectores, X = ( X 1 , X 2 , X 3 ) , y = ( y 1 , y 2 , y 3 ) , y z = ( z 1 , z 2 , z 3 ) .

z es la parte superior del objeto, así que primero lo rotamos para que z 2 = 0 . Solo lo rotamos arcán z 2 z 1 , y termina apuntando a z = ( ± z 1 2 + z 2 2 , 0 , z 3 ) . Y girarlo otro 180 si eso obtuvo un negativo en lugar de un positivo, entonces es z = ( z 1 2 + z 2 2 , 0 , z 3 ) . arcán z 2 z 1 sólo está realmente indefinido en el caso de z 1 = z 2 = 0 , en cuyo caso no lo gire en absoluto.

Ahora giramos sobre el y -eje por arcán z 1 2 + z 2 2 z 3 y obtenemos z = ( 0 , 0 , z 1 2 + z 2 2 + z 3 2 ) que debe ser ( 0 , 0 , 1 ) ya que es un vector unitario. Nuevamente, si no está definido, no necesitamos rotarlo.

Ya que y z y solo estamos rotando, y z .

A partir de ahí sabemos y 3 = 0 , entonces tenemos y = ( y 1 , y 2 , 0 ) .

Simplemente gírelo en el z -eje por arcán y 1 y 2 más un extra 180 si mira en sentido contrario, y obtenemos y = ( 0 , y 1 2 + y 2 2 , 0 ) . y eso es solo ( 0 , 1 , 0 ) , ya que es un vector unitario.

En este caso y 1 y y 2 ambos no pueden ser cero, así que no tenemos que preocuparnos por arcán siendo indefinido en absoluto.

Dado que giramos en el z -eje, y z ya estaba en el z -eje, z = z .

Todo lo que nos queda es X . Ya que X = y × z , y solo estamos rotando, X = y × z .

X = ( 0 , 1 , 0 ) × ( 0 , 0 , 1 )

X = ( 1 , 0 , 0 )

Querido Daniel. Realmente me gustaría entender este razonamiento. ¿Podría definir la "parte superior" del objeto? Además, si pudiera reformularlo para que su "objeto" sea un marco ortogonal de vectores unitarios X ^ , Y ^ , Z ^ y describir sus imágenes después de cada rotación constituyente, creo que será mucho más claro.
gracias daniel Fresco e intuitivo. Estoy casi convencido, pero creo que podemos ser más precisos de la manera sugerida por WetSavannaAnimal, también conocido como Rod Vance.

Por conveniencia, primero me gustaría cambiar la convención de signos. Eso es,

R z ( α ) = ( porque α pecado α 0 pecado α porque α 0 0 0 1 ) , R y ( β ) = ( porque β 0 pecado β 0 1 0 pecado β 0 porque β ) , R z ( γ ) = ( porque γ pecado γ 0 pecado γ porque γ 0 0 0 1 ) ,
y consideramos
R ( α , β , γ ) R z ( α ) R y ( β ) R z ( γ ) .

A continuación, recuerde que la matriz de rotación 3D R ( α , β , γ ) se determina únicamente especificando dónde están los tres vectores unitarios mi ^ 1 ( 1 , 0 , 0 ) T , mi ^ 2 ( 0 , 1 , 0 ) T , y mi ^ 3 ( 0 , 0 , 1 ) T están mapeados. [Estas son de hecho las tres columnas de R ( α , β , γ ) .]

Es sencillo comprobar que mi ^ 3 está asignado a

mi ^ 3 R ( α , β , γ ) mi ^ 3 = ( pecado β porque α , pecado β pecado α , porque β ) T norte ^ ( β , α ) ,
donde norte ^ ( β , α ) es el vector unitario con el ángulo polar β y el ángulo acimutal α . Observe que ajustando α y β , podemos hacer R ( α , β , γ ) mi ^ 3 para ser cualquier vector unitario que elijamos.

A continuación, supongamos que arreglamos α y β , y establecer γ = 0 . Tenemos mi ^ 3 = norte ^ ( β , α ) , y los dos vectores unitarios mi ^ 1 y mi ^ 2 (definido análogamente a mi ^ 3 ) cumplen las siguientes condiciones:

(1) Ambos se encuentran en el plano que es perpendicular a norte ^ ( β , α ) y contiene el origen.

(2) Tienen una orientación fija [porque d mi t R ( α , β , γ ) = 1 ].

(3) mi 1 mi 2 .

Al seguir girando sobre norte ^ ( β , α ) por un ángulo arbitrario γ , podemos ajustar mi ^ 1 y mi ^ 2 ser cualesquiera dos vectores unitarios que satisfagan las restricciones establecidas anteriormente. Por lo tanto, una matriz de rotación 3D arbitraria METRO puede ser representado por

METRO = R norte ^ ( α , β ) ( γ ) R ( α , β , 0 ) = R norte ^ ( α , β ) ( γ ) R z ( α ) R y ( β ) .
Aquí, α y β determinar METRO mi ^ 3 , y para un fijo METRO mi ^ 3 , γ determina METRO mi ^ 1 y METRO mi ^ 2 .

Ahora nota que R ( α , β , 0 ) mapea el z vector unitario (es decir, mi ^ 3 ) a norte ^ ( α , β ) . Por eso,

R norte ^ ( α , β ) ( γ ) = R ( α , β , 0 ) R z ( γ ) R ( α , β , 0 ) 1 ,
y
METRO = R norte ^ ( α , β ) ( γ ) R ( α , β , 0 ) = R ( α , β , 0 ) R z ( γ ) = R z ( α ) R y ( β ) R z ( γ ) = R ( α , β , γ ) .