scipy.spatial.transform.Rotation.__mul__¶
- Rotation.__mul__()¶
将这一旋转与另一旋转组合在一起。
如果 p 和 q 是两个旋转,则‘q后跟p’的组成等价于 p * q 。根据旋转矩阵,组成可以表示为
p.as_matrix().dot(q.as_matrix())
。- 参数
- 其他 :
Rotation
实例循环实例 对象,该对象包含要与此旋转组合的旋转。请注意,旋转组合是不可交换的,因此
p * q
不同于q * p
。
- 其他 :
- 退货
- 作文 :
Rotation
实例循环实例 此功能支持一次合成多个旋转。可能出现以下情况:
或者
p
或q
包含一次旋转。在这种情况下 composition 包含将另一个对象中的每个旋转与单个旋转合成的结果。两者都有
p
和q
包含N
旋转。在这种情况下,每次旋转p[i]
由相应的旋转组合而成q[i]
和 output 包含N
旋转。
- 作文 :
示例
>>> from scipy.spatial.transform import Rotation as R
两个单圈的组成:
>>> 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]])