當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。