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


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


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

用法:

Rotation.as_quat(self, canonical=False)#

表示为四元数。

3 维中的主动旋转可以使用单位范数四元数来表示 [1]。从四元数到旋转的映射是two-to-one,即四元数q-q,其中-q只是反转每个分量的符号,表示相同的空间旋转。返回值的格式为scalar-last(x,y,z,w)。

参数

canonical bool, 默认 False

是否将旋转空间的冗余双覆盖映射到唯一的“canonical”单覆盖。如果为 True,则从 {q, -q} 中选择四元数,使得 w 项为正。如果 w 项为 0,则选择四元数,使得 x、y 和 z 项的第一个非零项为正。

返回

quat numpy.ndarray ,形状 (4,) 或 (N, 4)

形状取决于用于初始化的输入的形状。

参考

例子

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

表示单次旋转:

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

表示具有单次旋转的堆栈:

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

表示单个对象中的多个旋转:

>>> r = R.from_rotvec([[np.pi, 0, 0], [0, 0, np.pi/2]])
>>> r.as_quat().shape
(2, 4)

四元数可以从旋转空间的冗余双重覆盖映射到具有正 w 项的规范表示。

>>> r = R.from_quat([0, 0, 0, -1])
>>> r.as_quat()
array([0. , 0. , 0. , -1.])
>>> r.as_quat(canonical=True)
array([0. , 0. , 0. , 1.])

相关用法


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