bundles / scipy latest / scipy / spatial / transform / _rotation / Rotation / from_mrp
staticmethod
scipy.spatial.transform._rotation:Rotation.from_mrp
source: build-install/usr/lib/python3.14/site-packages/scipy/spatial/transform/_rotation.py:932
Signature
def from_mrp(mrp: ArrayLike) → RotationSummary
Initialize from Modified Rodrigues Parameters (MRPs).
Extended Summary
MRPs are a 3 dimensional vector co-directional to the axis of rotation and whose magnitude is equal to tan(theta / 4), where theta is the angle of rotation (in radians) [1].
MRPs have a singularity at 360 degrees which can be avoided by ensuring the angle of rotation does not exceed 180 degrees, i.e. switching the direction of the rotation when it is past 180 degrees.
Parameters
mrp: array_like, shape (..., 3)A single vector or an ND array of vectors, where the last dimension contains the rotation parameters.
Returns
rotation: `Rotation` instanceObject containing the rotations represented by input MRPs.
Notes
Examples
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,)Initialize multiple rotations in one object:
r = R.from_mrp([ [0, 0, 1], [1, 0, 0]])✓
r.as_euler('xyz', degrees=True)
✗array([[ 0., 0., 180.],
[180., 0., 0.]])
r.as_euler('xyz').shape
✓(2, 3)It is also possible to have a stack of a single rotation:
r = R.from_mrp([[0, 0, np.pi/2]]) r.as_euler('xyz').shape✓
(1, 3)
Aliases
scipy.spatial.transform.Rotation.from_mrp