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


Python SciPy transform.Slerp用法及代碼示例

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

用法:

class  scipy.spatial.transform.Slerp(times, rotations)#

旋轉的球麵線性插值。

連續旋轉之間的插值是作為圍繞具有恒定角速度的固定軸的旋轉執行的 [1]。這確保了插值旋轉遵循初始方向和最終方向之間的最短路徑。

參數

times 數組, 形狀 (N,)

已知旋轉次數。必須指定至少 2 次。

rotations Rotation 實例

旋轉之間執行插值。必須包含 N 個旋轉。

注意

參考

例子

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

設置固定的關鍵幀旋轉和時間:

>>> key_rots = R.random(5, random_state=2342345)
>>> key_times = [0, 1, 2, 3, 4]

創建插值器對象:

>>> slerp = Slerp(key_times, key_rots)

在給定時間插入旋轉:

>>> times = [0, 0.5, 0.25, 1, 1.5, 2, 2.75, 3, 3.25, 3.60, 4]
>>> interp_rots = slerp(times)

以歐拉角表示的關鍵幀旋轉:

>>> key_rots.as_euler('xyz', degrees=True)
array([[ 14.31443779, -27.50095894,  -3.7275787 ],
       [ -1.79924227, -24.69421529, 164.57701743],
       [146.15020772,  43.22849451, -31.34891088],
       [ 46.39959442,  11.62126073, -45.99719267],
       [-88.94647804, -49.64400082, -65.80546984]])

以歐拉角表示的插值旋轉。這些與關鍵幀時間範圍的兩個端點處的關鍵幀旋轉一致。

>>> interp_rots.as_euler('xyz', degrees=True)
array([[  14.31443779,  -27.50095894,   -3.7275787 ],
       [   4.74588574,  -32.44683966,   81.25139984],
       [  10.71094749,  -31.56690154,   38.06896408],
       [  -1.79924227,  -24.69421529,  164.57701743],
       [  11.72796022,   51.64207311, -171.7374683 ],
       [ 146.15020772,   43.22849451,  -31.34891088],
       [  68.10921869,   20.67625074,  -48.74886034],
       [  46.39959442,   11.62126073,  -45.99719267],
       [  12.35552615,    4.21525086,  -64.89288124],
       [ -30.08117143,  -19.90769513,  -78.98121326],
       [ -88.94647804,  -49.64400082,  -65.80546984]])

相關用法


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