После некоторых исследований, на данный момент, я понимаю scipy
имеет правую систему координат оси и вращение влево.
Например
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]
Но я не могу понять разницу между extrinsic
и intrinsic
вращение.
Для моего понимания.
extrinsic
следует использовать фиксированную ось, и intrinsic
следует использовать поворотную ось.
Итак, если я правильно это понимаю.
Здесь "XYZ" означает intrinsic rotation
, вы можете найти его в официальном документе
# 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()
Я неправильно это понял?