scipy.spatial.transform.Rotation.
__mul__#
- Rotation.__mul__()#
将此旋转与另一个旋转组合。
如果 p 和 q 是两个旋转,则“q 后跟 p”的组合等效于 p * q。就旋转矩阵而言,组合可以表示为
p.as_matrix() @ q.as_matrix()
。- 参数:
- other
Rotation
实例 包含要与此旋转组合的旋转的对象。请注意,旋转组合不可交换,因此
p * q
通常不同于q * p
。
- other
- 返回:
- composition
Rotation
实例 此函数支持一次组合多个旋转。以下情况是可能的
p
或q
包含单个旋转。在这种情况下,composition 包含将另一个对象中的每个旋转与单个旋转组合的结果。p
和q
都包含N
个旋转。在这种情况下,每个旋转p[i]
都与相应的旋转q[i]
组合,并且 output 包含N
个旋转。
- composition
示例
>>> from scipy.spatial.transform import Rotation as R >>> import numpy as np
两个单旋转的组合
>>> p = R.from_quat([0, 0, 1, 1]) >>> q = R.from_quat([1, 0, 0, 1]) >>> p.as_matrix() array([[ 0., -1., 0.], [ 1., 0., 0.], [ 0., 0., 1.]]) >>> q.as_matrix() array([[ 1., 0., 0.], [ 0., 0., -1.], [ 0., 1., 0.]]) >>> r = p * q >>> r.as_matrix() array([[0., 0., 1.], [1., 0., 0.], [0., 1., 0.]])
包含相同旋转数量的两个对象的组合
>>> p = R.from_quat([[0, 0, 1, 1], [1, 0, 0, 1]]) >>> q = R.from_rotvec([[np.pi/4, 0, 0], [-np.pi/4, 0, np.pi/4]]) >>> p.as_quat() array([[0. , 0. , 0.70710678, 0.70710678], [0.70710678, 0. , 0. , 0.70710678]]) >>> q.as_quat() array([[ 0.38268343, 0. , 0. , 0.92387953], [-0.37282173, 0. , 0.37282173, 0.84971049]]) >>> r = p * q >>> r.as_quat() array([[ 0.27059805, 0.27059805, 0.65328148, 0.65328148], [ 0.33721128, -0.26362477, 0.26362477, 0.86446082]])