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


Python SciPy Rotation.from_matrix用法及代碼示例


本文簡要介紹 python 語言中 scipy.spatial.transform.Rotation.from_matrix 的用法。

用法:

classmethod  Rotation.from_matrix(cls, matrix)#

從旋轉矩陣初始化。

3 維旋轉可以用 3 x 3 適當的正交矩陣表示 [1]。如果輸入不是正確正交的,則使用 [2] 中說明的方法創建近似值。

參數

matrix 數組,形狀 (N, 3, 3) 或 (3, 3)

單個矩陣或矩陣堆棧,其中matrix[i] 是i-th 矩陣。

返回

rotation Rotation 實例

包含由旋轉矩陣表示的旋轉的對象。

注意

此函數之前稱為from_dcm。

參考

[2]

F. Landis Markley,“旋轉矩陣中的四元數單位”,製導、控製和動力學雜誌,第一卷。 31.2,第 440-442 頁,2008 年。

例子

>>> 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_matrix().shape
(3, 3)

在單個對象中初始化多個旋轉:

>>> r = R.from_matrix([
... [
...     [0, -1, 0],
...     [1, 0, 0],
...     [0, 0, 1],
... ],
... [
...     [1, 0, 0],
...     [0, 0, -1],
...     [0, 1, 0],
... ]])
>>> r.as_matrix().shape
(2, 3, 3)

如果輸入矩陣不是特殊正交(行列式等於 +1 的正交),則存儲特殊正交估計:

>>> a = np.array([
... [0, -0.5, 0],
... [0.5, 0, 0],
... [0, 0, 0.5]])
>>> np.linalg.det(a)
0.12500000000000003
>>> r = R.from_matrix(a)
>>> matrix = r.as_matrix()
>>> matrix
array([[-0.38461538, -0.92307692,  0.        ],
       [ 0.92307692, -0.38461538,  0.        ],
       [ 0.        ,  0.        ,  1.        ]])
>>> np.linalg.det(matrix)
1.0000000000000002

也可以有一個包含單個旋轉的堆棧:

>>> r = R.from_matrix([[
... [0, -1, 0],
... [1, 0, 0],
... [0, 0, 1]]])
>>> r.as_matrix()
array([[[ 0., -1.,  0.],
        [ 1.,  0.,  0.],
        [ 0.,  0.,  1.]]])
>>> r.as_matrix().shape
(1, 3, 3)

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.spatial.transform.Rotation.from_matrix。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。