Создайте два кватерниона со следующей интерпретацией:
a
= вращение на 45 степени вокруг оси Z
c
= -45 степени вращением вокруг оси Z
Функции slerp
с кватернионами a
и c
и задайте коэффициент интерполяции 0,5.
Область выхода slerp
, b
, представляет среднее вращение a
и c
. Для проверки преобразуйте b
до углов Эйлера в степенях.
averageRotation = 1×3
0 0 0
Коэффициент интерполяции задан как нормированное значение между 0
и 1
, включительно. Коэффициент интерполяции 0
соответствует a
кватернион и коэффициент интерполяции 1
соответствует c
кватернион. Функции slerp
с коэффициентами 0
и 1
для подтверждения.
ans = 2×3
45.0000 0 0
-45.0000 0 0
Можно создать гладкие пути между кватернионами путем определения массивов одинаково разнесенных коэффициентов интерполяции.
Для кватернионов, которые представляют вращение только вокруг одной оси, установка коэффициентов интерполяции как одинаково разнесенных приводит к кватернионам с равными интервалами в углах Эйлера. Преобразование interpolatedQuaternions
чтобы получить углы Эйлера и проверить, что различие между углами в пути является постоянной.
abc = 10×3
9.0000 0 0
9.0000 0 0
9.0000 0 0
9.0000 0 0
9.0000 0 0
9.0000 0 0
9.0000 0 0
9.0000 0 0
9.0000 0 0
9.0000 0 0
Также можно использовать dist
функция для проверки, что расстояние между интерполированными кватернионами соответствует. The dist
функция возвращает угловое расстояние в радианах; преобразуйте в степени для простого сравнения.
def = 1×10
9.0000 9.0000 9.0000 9.0000 9.0000 9.0000 9.0000 9.0000 9.0000 9.0000