本文簡要介紹 python 語言中 scipy.spatial.transform.RotationSpline
的用法。
用法:
class scipy.spatial.transform.RotationSpline(times, rotations)#
使用連續角速率和加速度對旋轉進行插值。
每個連續方向之間的旋轉向量是時間的三次函數,並且保證角速率和加速度是連續的。這種插值類似於三次樣條插值。
有關數學和實現細節,請參閱 [1]。
- times: 數組, 形狀 (N,)
已知旋轉次數。必須指定至少 2 次。
- rotations:
Rotation
實例 旋轉之間執行插值。必須包含 N 個旋轉。
參數 ::
參考:
例子:
>>> from scipy.spatial.transform import Rotation, RotationSpline >>> import numpy as np
從歐拉角定義時間序列和旋轉:
>>> times = [0, 10, 20, 40] >>> angles = [[-10, 20, 30], [0, 15, 40], [-30, 45, 30], [20, 45, 90]] >>> rotations = Rotation.from_euler('XYZ', angles, degrees=True)
創建插值器對象:
>>> spline = RotationSpline(times, rotations)
插值歐拉角、角速率和加速度:
>>> angular_rate = np.rad2deg(spline(times, 1)) >>> angular_acceleration = np.rad2deg(spline(times, 2)) >>> times_plot = np.linspace(times[0], times[-1], 100) >>> angles_plot = spline(times_plot).as_euler('XYZ', degrees=True) >>> angular_rate_plot = np.rad2deg(spline(times_plot, 1)) >>> angular_acceleration_plot = np.rad2deg(spline(times_plot, 2))
在此圖上,您會看到歐拉角是連續且平滑的:
>>> import matplotlib.pyplot as plt >>> plt.plot(times_plot, angles_plot) >>> plt.plot(times, angles, 'x') >>> plt.title("Euler angles") >>> plt.show()
角速率也很平滑:
>>> plt.plot(times_plot, angular_rate_plot) >>> plt.plot(times, angular_rate, 'x') >>> plt.title("Angular rate") >>> plt.show()
角加速度是連續的,但不是平滑的。另請注意,角加速度不是piecewise-linear 函數,因為它不同於旋轉矢量的二階導數(它是三次樣條中的piecewise-linear 函數)。
>>> plt.plot(times_plot, angular_acceleration_plot) >>> plt.plot(times, angular_acceleration, 'x') >>> plt.title("Angular acceleration") >>> plt.show()
相關用法
- Python SciPy transform.Rotation用法及代碼示例
- Python SciPy transform.Slerp用法及代碼示例
- Python SciPy interpolate.make_interp_spline用法及代碼示例
- Python SciPy stats.anderson用法及代碼示例
- Python SciPy ClusterNode.pre_order用法及代碼示例
- Python SciPy stats.iqr用法及代碼示例
- Python SciPy FortranFile.read_record用法及代碼示例
- Python SciPy ndimage.correlate用法及代碼示例
- Python SciPy special.exp1用法及代碼示例
- Python SciPy special.expn用法及代碼示例
- Python SciPy signal.czt_points用法及代碼示例
- Python SciPy interpolate.krogh_interpolate用法及代碼示例
- Python SciPy ndimage.morphological_gradient用法及代碼示例
- Python SciPy distance.sokalmichener用法及代碼示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代碼示例
- Python SciPy linalg.cdf2rdf用法及代碼示例
- Python SciPy csc_array.diagonal用法及代碼示例
- Python SciPy fft.idctn用法及代碼示例
- Python SciPy linalg.LaplacianNd用法及代碼示例
- Python SciPy linalg.solve_circulant用法及代碼示例
- Python SciPy hierarchy.ward用法及代碼示例
- Python SciPy signal.chirp用法及代碼示例
- Python SciPy stats.genpareto用法及代碼示例
- Python SciPy ndimage.variance用法及代碼示例
- Python SciPy signal.residue用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.spatial.transform.RotationSpline。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。