当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy Rotation.__mul__用法及代码示例


本文简要介绍 python 语言中 scipy.spatial.transform.Rotation.__mul__ 的用法。

用法:

Rotation.__mul__()#

与另一个组成这个轮换。

如果pq是两次旋转,那么“q 后跟 p”的组合等价于p*q。就旋转矩阵而言,组合可以表示为p.as_matrix().dot(q.as_matrix()).

参数

other Rotation 实例

包含要与此组合的旋转的对象。请注意,旋转组合不是可交换的,因此 p * qq * p 不同。

返回

composition Rotation 实例

此函数支持一次组合多个旋转。以下情况是可能的:

  • 任何一个p或者q包含单个旋转。在这种情况下作品包含将另一个对象中的每个旋转与单个旋转组合的结果。

  • 两个都pq包含N轮换。在这种情况下,每次旋转p[i]由相应的旋转组成q[i]输出包含N轮换。

例子

>>> 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]])

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.spatial.transform.Rotation.__mul__。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。