scipy.spatial.transform.Rotation.

from_euler#

static Rotation.from_euler(seq, angles, degrees=False)[source]#

从欧拉角初始化。

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

这三次旋转可以在全局参考系(外旋)或以体心参考系(内旋)中进行,后者附着于并随旋转物体一起移动 [1]

参数:
seq字符串

指定旋转轴的序列。对于内旋,最多包含集合 {‘X’, ‘Y’, ‘Z’} 中的 3 个字符,对于外旋,包含集合 {‘x’, ‘y’, ‘z’} 中的 3 个字符。外旋和内旋不能在同一个函数调用中混合使用。

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

以弧度(degrees 为 False)或度(degrees 为 True)指定的欧拉角。 seq 中的每个字符定义一个旋转轴 angles 围绕该轴旋转。 结果旋转的形状为 np.atleast_1d(angles).shape[:-1]。 因此,无量纲角度仅对单字符 seq 有效。

degreesbool, optional

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

返回:
rotationRotation 实例

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

附注

数组 API 标准支持

from_euler 对 Python Array API Standard 兼容的后端具有实验性支持,除了 NumPy 之外。请考虑通过设置环境变量 SCIPY_ARRAY_API=1 并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)的组合。

CPU

GPU

NumPy

不适用

CuPy

不适用

PyTorch

JAX

Dask

不适用

有关更多信息,请参阅 对数组 API 标准的支持

参考文献

示例

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