Slerp#
- класс scipy.spatial.transform.Slerp(раз, вращения)#
Сферическая линейная интерполяция вращений.
Интерполяция между последовательными вращениями выполняется как вращение вокруг фиксированной оси с постоянной угловой скоростью [1]. Это гарантирует, что интерполированные вращения следуют кратчайшему пути между начальной и конечной ориентациями.
- Параметры:
- разarray_like, shape (N,)
Времена известных вращений. Должно быть указано не менее 2 времен.
- вращения
Rotationэкземпляр Вращения для выполнения интерполяции между ними. Должны содержать N вращений.
Методы
__call__(разы)Интерполировать вращения.
Смотрите также
Примечания
Добавлено в версии 1.2.0.
Ссылки
Примеры
>>> 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]])