scipy.spatial.transform.Rotation.from_euler

Rotation.from_euler()

从欧拉角度初始化。

3-D中的旋转可以由围绕一系列轴的3个旋转的序列来表示。从理论上讲,横跨三维欧几里得空间的任何三个轴都足够了。在实践中,选择旋转轴作为基本矢量。

这三个旋转既可以在全局参照系(外部)中,也可以在以身体为中心的参照系(内在)中,该参照系附着在被旋转的对象上并与其一起移动 [1].

参数
seq字符串

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

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

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

  • 单个值

  • 具有形状(N,)的ARRAY_LIKE,其中每个 angle[i] 对应于一次旋转

  • 具有形状(N,1)的ARRAY_LIKE,其中每个 angle[i, 0] 对应于一次旋转

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

  • 具有形状(W,)的ARRAY_LIKE,其中 W 是指 seq ,它对应于具有以下特性的单次旋转 W

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

degrees布尔值,可选

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

退货
旋转Rotation 实例循环实例

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

参考文献

1

https://en.wikipedia.org/wiki/Euler_angles#Definition_by_intrinsic_rotations

示例

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