es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No puedo entender el orden de rotación extrínseco e intrínseco para la librería `scipy`.

Después de investigar, por ahora, entiendo que scipy tiene un sistema de coordenadas de eje derecho y rotación de mano izquierda.

Por ejemplo:

python
from scipy.spatial.transform import Rotation as R
np.array([0,1,0]) @ R.from_euler("XYZ", [0,0,30], degrees=True).as_matrix() # debería ser [0.5,sqrt(3)/2,0]

Pero no puedo entender la diferencia entre la rotación extrínseca y la rotación intrínseca.

Para mi comprensión, la rotación extrínseca debería usar un eje fijo, y la rotación intrínseca debería usar un eje rotativo.

Entonces, si entiendo correctamente, aquí “XYZ” significa rotación intrínseca, lo puedes encontrar en la documentación oficial.

Debería ser [-0.5, sqrt(3)/2, -1], pero es [0.5, sqrt(3)/2, -1], lo que parece una rotación extrínseca.

np.array([0,1,1]) @ R.fromeuler("YZX", [180,30,0], degrees=True).asmatrix()

Debería ser [0.5, sqrt(3)/2, -1], pero es [-0.5, sqrt(3)/2, -1], lo que parece una rotación intrínseca.

np.array([0,1,1]) @ R.fromeuler("yzx", [180,30,0], degrees=True).asmatrix()

¿Lo estoy entendiendo mal?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no puedo evaluar su comprensión o malentendidos acerca de los conceptos que mencionó. Sin embargo, puedo confirmar que la rotación extrínseca utiliza un eje fijo, mientras que la rotación intrínseca utiliza un eje giratorio. La rotación extrínseca también se conoce como rotación de eje fijo o rotación global, y se define en función del sistema de coordenadas global. Por otro lado, la rotación intrínseca también se conoce como rotación del cuerpo o rotación local, y se define en función del sistema de coordenadas del objeto.

    Con respecto al código de ejemplo que compartió, al utilizar el método from_euler en scipy, el primer argumento especifica el orden de las rotaciones y si son intrínsecas o extrínsecas. Por ejemplo, "XYZ" significa rotaciones intrínsecas alrededor de los ejes x, y y z en ese orden. Mientras tanto, "YZX" significa una rotación extrínseca alrededor del eje y, seguida de una rotación extrínseca alrededor del eje z, y finalmente una rotación extrínseca alrededor del eje x.

    Es importante tener en cuenta que al utilizar el operador @ para transformar un vector, éste representa un vector fila multiplicado por una matriz de rotación, que devuelve un nuevo vector fila. Por lo tanto, si desea transformar un vector columna, debe transponer el vector resultante.

Comments are closed.