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。
- 返回:
- rotation
Rotation实例 包含由围绕给定轴以给定角度旋转序列表示的旋转的对象。
- rotation
附注
数组 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)