当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy Rotation.from_quat用法及代码示例


本文简要介绍 python 语言中 scipy.spatial.transform.Rotation.from_quat 的用法。

用法:

classmethod  Rotation.from_quat(cls, quat)#

从四元数初始化。

可以使用 unit-norm 四元数 [1] 来表示 3D 旋转。

高级用户可能对四元数表示的 3D 空间“double cover”感兴趣 [2]。从版本 1.11.0 开始,与四元数 q 相对应的 Rotation r 上的以下操作子集(且仅此子集)保证保留双覆盖属性: r = Rotation.from_quat(q)r.as_quat(canonical=False)r.inv() ,以及使用 * 运算符进行组合,例如 r*r

参数

quat 数组,形状 (N, 4) 或 (4,)

每行都是一个(可能是非单位范数)四元数,表示主动旋转,采用 scalar-last (x, y, z, w) 格式。每个四元数将被标准化为单位范数。

返回

rotation Rotation 实例

包含由输入四元数表示的旋转的对象。

参考

[2]

Hanson, Andrew J.“四元数可视化”。摩根考夫曼出版公司,旧金山,加利福尼亚州。 2006年。

例子

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

初始化单个旋转:

>>> r = R.from_quat([1, 0, 0, 0])
>>> r.as_quat()
array([1., 0., 0., 0.])
>>> r.as_quat().shape
(4,)

在单个对象中初始化多个旋转:

>>> r = R.from_quat([
... [1, 0, 0, 0],
... [0, 0, 0, 1]
... ])
>>> r.as_quat()
array([[1., 0., 0., 0.],
       [0., 0., 0., 1.]])
>>> r.as_quat().shape
(2, 4)

也可以有一个单一旋转的堆栈:

>>> r = R.from_quat([[0, 0, 0, 1]])
>>> r.as_quat()
array([[0., 0., 0., 1.]])
>>> r.as_quat().shape
(1, 4)

四元数在初始化之前被标准化。

>>> r = R.from_quat([0, 0, 1, 1])
>>> r.as_quat()
array([0.        , 0.        , 0.70710678, 0.70710678])

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.spatial.transform.Rotation.from_quat。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。