Depois de algumas pesquisas, por agora, eu entendo scipy
tem a mão direita do eixo do sistema de coordenadas, e a mão esquerda de rotação.
Por exemplo
from scipy.spatial.transform import Rotation as R
np.array([0,1,0]) @ R.from_euler("XYZ", [0,0,30], degrees=True).as_matrix() # should be [0.5,sqrt(3)/2,0]
Mas eu não posso descobrir a diferença entre o extrinsic
e intrinsic
rotação.
Para o meu entendimento.
extrinsic
deve usar um eixo fixo, e intrinsic
deve usar o rotativo do eixo.
Então, se eu entendi corretamente.
Aqui "XYZ" significa intrinsic rotation
, você pode encontrá-lo no oficial doc
# should be [-0.5,sqrt(3)/2,-1]
# But it is [0.5,sqrt(3)/2,-1], seems like the `extrinsic rotation`
np.array([0,1,1]) @ R.from_euler("YZX", [180,30,0], degrees=True).as_matrix()
# should be [0.5,sqrt(3)/2,-1]
# But it is [-0.5,sqrt(3)/2,-1], seems like the `intrinsic rotation`
np.array([0,1,1]) @ R.from_euler("yzx", [180,30,0], degrees=True).as_matrix()
Estou entendem isso?