scipy.spatial.transform.Rotation.
__mul__#
- Rotation.__mul__()#
將此旋轉與另一個旋轉組合。
如果 p 和 q 是兩個旋轉,則 ‘q 接著 p’ 的組合等同於 p * q。以旋轉矩陣來說,此組合可以表示為
p.as_matrix() @ q.as_matrix()
。- 參數:
- other
Rotation
實例 包含要與此旋轉組合的其他旋轉的物件。請注意,旋轉組合不具交換律,因此
p * q
通常與q * p
不同。
- other
- 回傳:
- composition
Rotation
實例 此函數支援一次組合多個旋轉。以下情況是可能的
或者
p
或q
包含單一旋轉。在這種情況下,composition 包含將另一個物件中的每個旋轉與單一旋轉組合的結果。如果
p
和q
都包含N
個旋轉。在這種情況下,每個旋轉p[i]
都會與對應的旋轉q[i]
組合,且 output 包含N
個旋轉。
- composition
範例
>>> from scipy.spatial.transform import Rotation as R >>> import numpy as np
兩個單一旋轉的組合
>>> p = R.from_quat([0, 0, 1, 1]) >>> q = R.from_quat([1, 0, 0, 1]) >>> p.as_matrix() array([[ 0., -1., 0.], [ 1., 0., 0.], [ 0., 0., 1.]]) >>> q.as_matrix() array([[ 1., 0., 0.], [ 0., 0., -1.], [ 0., 1., 0.]]) >>> r = p * q >>> r.as_matrix() array([[0., 0., 1.], [1., 0., 0.], [0., 1., 0.]])
包含相等旋轉數量的兩個物件的組合
>>> p = R.from_quat([[0, 0, 1, 1], [1, 0, 0, 1]]) >>> q = R.from_rotvec([[np.pi/4, 0, 0], [-np.pi/4, 0, np.pi/4]]) >>> p.as_quat() array([[0. , 0. , 0.70710678, 0.70710678], [0.70710678, 0. , 0. , 0.70710678]]) >>> q.as_quat() array([[ 0.38268343, 0. , 0. , 0.92387953], [-0.37282173, 0. , 0.37282173, 0.84971049]]) >>> r = p * q >>> r.as_quat() array([[ 0.27059805, 0.27059805, 0.65328148, 0.65328148], [ 0.33721128, -0.26362477, 0.26362477, 0.86446082]])