scipy.spatial.transform.Rotation.

__pow__#

Rotation.__pow__()#

將此旋轉與自身複合 n 次。

旋轉 p 與自身的複合可以擴展到非整數 n,方法是將冪次 n 視為應用於繞旋轉固定軸的旋轉角度的比例因子。表達式 q = p ** n 也可以表示為 q = Rotation.from_rotvec(n * p.as_rotvec())

如果 n 為負數,則旋轉會在應用冪次之前反轉。換句話說,p ** -abs(n) == p.inv() ** abs(n)

參數:
nfloat

將旋轉與自身複合的次數。

modulusNone

此覆寫的參數不適用於 Rotations,並且必須為 None

返回:
powerRotation 實例

如果輸入旋轉 p 包含 N 個多個旋轉,則輸出將包含 N 個旋轉,其中第 i 個旋轉等於 p[i] ** n

註解

例如,2 的冪次會使旋轉角度加倍,而 0.5 的冪次會使角度減半。有三個值得注意的情況:如果 n == 1 則返回原始旋轉,如果 n == 0 則返回單位旋轉,如果 n == -1 則返回 p.inv()

請注意,有效取得旋轉根的分數冪次 n,會使用該角度的最短路徑最小表示形式(主根)來執行此操作。這表示 n1/n 的冪次不一定是彼此的反函數。例如,+240 度旋轉的 0.5 冪次將計算為 -120 度旋轉的 0.5 冪次,結果是 -60 度而不是 +120 度的旋轉。

範例

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

將旋轉提升到冪次

>>> p = R.from_rotvec([1, 0, 0])
>>> q = p ** 2
>>> q.as_rotvec()
array([2., 0., 0.])
>>> r = p ** 0.5
>>> r.as_rotvec()
array([0.5, 0., 0.])

反向冪次不一定會抵消

>>> p = R.from_rotvec([0, 0, 120], degrees=True)
>>> ((p ** 2) ** 0.5).as_rotvec(degrees=True)
array([  -0.,   -0., -60.])