scipy.spatial.transform.Rotation.

as_mrp#

Rotation.as_mrp(self)#

表示为修正罗德里格斯参数(MRPs)。

MRPs 是一个与旋转轴同方向的三维向量,其大小等于 tan(theta / 4),其中 theta 是旋转角度(以弧度为单位)[Raa93c7dfddad-1]_。

MRPs 在 360 度处有一个奇点,可以通过确保旋转角度不超过 180 度来避免,即在超过 180 度时切换旋转方向。此函数将始终返回对应于小于或等于 180 度旋转的 MRPs。

返回:
mrpsndarray, 形状 (3,) 或 (N, 3)

形状取决于用于初始化的输入的形状。

注释

Added in version 1.6.0.

参考文献

[1]

Shuster, M. D. “姿态表示方法综述”, 《宇航科学杂志》, 第41卷, 第4期, 1993年, 第475-476页

示例

>>> from scipy.spatial.transform import Rotation as R
>>> import numpy as np

表示单次旋转:

>>> r = R.from_rotvec([0, 0, np.pi])
>>> r.as_mrp()
array([0.        , 0.        , 1.         ])
>>> r.as_mrp().shape
(3,)

用单次旋转表示一个栈:

>>> r = R.from_euler('xyz', [[180, 0, 0]], degrees=True)
>>> r.as_mrp()
array([[1.       , 0.        , 0.         ]])
>>> r.as_mrp().shape
(1, 3)

表示多次旋转:

>>> r = R.from_rotvec([[np.pi/2, 0, 0], [0, 0, np.pi/2]])
>>> r.as_mrp()
array([[0.41421356, 0.        , 0.        ],
       [0.        , 0.        , 0.41421356]])
>>> r.as_mrp().shape
(2, 3)