scipy.spatial.transform.Rotation.

from_euler#

classmethod Rotation.from_euler(cls, seq, angles, degrees=False)#

从欧拉角初始化。

3-D 旋转可以用围绕一系列轴的 3 次旋转序列来表示。 理论上,任何三个跨越 3-D 欧几里得空间的轴都足够了。 实际上,旋转轴被选择为基向量。

这三个旋转可以在全局参考系(外在)或以物体为中心的参考系(内在)中进行,后者附着在正在旋转的物体上并随之移动 [1]

参数:
seq字符串

指定旋转轴的顺序。 最多 3 个字符,属于集合 {'X', 'Y', 'Z'} 表示内在旋转,或 {'x', 'y', 'z'} 表示外在旋转。 外在和内在旋转不能在一次函数调用中混合使用。

angles浮点数或类数组,形状 (N,) 或 (N, [1 或 2 或 3])

以弧度(degrees 为 False)或度数(degrees 为 True)指定的欧拉角。 对于单个字符 seqangles 可以是

  • 单个值

  • 具有形状 (N,) 的类数组,其中每个 angle[i] 对应于单个旋转

  • 具有形状 (N, 1) 的类数组,其中每个 angle[i, 0] 对应于单个旋转

对于 2 个和 3 个字符宽的 seqangles 可以是

  • 具有形状 (W,) 的类数组,其中 Wseq 的宽度,它对应于具有 W 轴的单个旋转

  • 具有形状 (N, W) 的类数组,其中每个 angle[i] 对应于描述单个旋转的欧拉角序列

degreesbool,可选

如果为 True,则假定给定的角度以度为单位。 默认值为 False。

返回:
rotationRotation 实例

包含由给定轴周围的旋转序列以给定的角度表示的旋转的对象。

参考文献

示例

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

初始化沿单个轴的单个旋转

>>> r = R.from_euler('x', 90, degrees=True)
>>> r.as_quat().shape
(4,)

使用给定的轴序列初始化单个旋转

>>> r = R.from_euler('zyx', [90, 45, 30], degrees=True)
>>> r.as_quat().shape
(4,)

初始化一个堆栈,其中包含围绕单个轴的单个旋转

>>> r = R.from_euler('x', [90], degrees=True)
>>> r.as_quat().shape
(1, 4)

初始化一个堆栈,其中包含具有轴序列的单个旋转

>>> r = R.from_euler('zyx', [[90, 45, 30]], degrees=True)
>>> r.as_quat().shape
(1, 4)

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

>>> r = R.from_euler('x', [90, 45, 30], degrees=True)
>>> r.as_quat().shape
(3, 4)

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

>>> r = R.from_euler('zyx', [[90, 45, 30], [35, 45, 90]], degrees=True)
>>> r.as_quat().shape
(2, 4)