scipy.spatial.transform.Rotation.

from_mrp#

classmethod Rotation.from_mrp(cls, mrp)#

从修正罗德里格斯参数 (MRP) 初始化。

MRP 是一个 3 维向量,与旋转轴共线,其大小等于 tan(theta / 4),其中 theta 是旋转角度(以弧度为单位)[1].

MRP 在 360 度时存在奇点,可以通过确保旋转角度不超过 180 度来避免,即在旋转角度超过 180 度时切换旋转方向。

参数:
mrparray_like,形状为 (N, 3) 或 (3,)

单个向量或向量堆栈,其中 mrp[i] 给出第 i 组 MRP。

返回:
rotationRotation 实例

包含输入 MRP 所表示的旋转的对象。

备注

在版本 1.6.0 中添加。

参考文献

[1]

Shuster, M. D. “A Survey of Attitude Representations”, The Journal of Astronautical Sciences, Vol. 41, No.4, 1993, pp. 475-476

示例

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

初始化单个旋转

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

在一个对象中初始化多个旋转

>>> r = R.from_mrp([
... [0, 0, 1],
... [1, 0, 0]])
>>> r.as_euler('xyz', degrees=True)
array([[0.        , 0.        , 180.      ],
       [180.0     , 0.        , 0.        ]])
>>> r.as_euler('xyz').shape
(2, 3)

也可以堆叠单个旋转

>>> r = R.from_mrp([[0, 0, np.pi/2]])
>>> r.as_euler('xyz').shape
(1, 3)