Создайте два кватерниона со следующей интерпретацией:
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