scipy.spatial.transform.Rotation.
from_euler#
- classmethod Rotation.from_euler(cls, seq, angles, degrees=False)#
从欧拉角初始化。
三维旋转可以通过围绕一系列轴的三个旋转的序列来表示。理论上,任何三个跨越三维欧几里得空间的轴都足够。实际上,旋转轴被选择为基向量。
这三个旋转可以在全局参考系(外在的)或物体中心参考系(内在的)中进行,后者附着于并随着旋转物体移动 [1]。
- 参数:
- seq字符串
指定旋转的轴序列。最多3个字符属于集合 {‘X’, ‘Y’, ‘Z’} 用于内在旋转,或 {‘x’, ‘y’, ‘z’} 用于外在旋转。在一个函数调用中不能混合使用外在和内在旋转。
- 角度float 或 array_like, 形状 (N,) 或 (N, [1 或 2 或 3])
以弧度(degrees 为 False)或度数(degrees 为 True)指定的欧拉角。对于单个字符 seq,angles 可以是:
一个单一值
类似数组的形状为 (N,),其中每个 angle[i] 对应于一个单独的旋转
形状为 (N, 1) 的类数组对象,其中每个 angle[i, 0] 对应于一个单独的旋转
对于2和3个字符宽的 seq,angles 可以是:
形状为 (W,) 的类数组,其中 W 是 seq 的宽度,对应于一个包含 W 个轴的单次旋转
形状为 (N, W) 的类数组对象,其中每个 angle[i] 对应一个欧拉角序列,描述单次旋转
- 度数bool, 可选
如果为 True,则假设给定的角度以度为单位。默认为 False。
- 返回:
- 旋转 :
Rotation实例旋转实例 包含旋转的对象,表示围绕给定轴按给定角度进行的旋转序列。
- 旋转 :
参考文献
示例
>>> 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)