Slerp

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

В комп'ютерній графіці, SLERP (spherical linear interpolation) — лінійна інтерполяція на сфері, що використовується для анімації обертання з постійною кутовою швидкістю за допомогою кватерніонів.

Геометрична інтерпретація

SLERP має геометричну інтерпретацію незалежну від кватерніонів та розмірності простору. Вона базується на тому, що довільна точка на кривій повинна представлятись у вигляді лінійної комбінації кінців кривої. Якщо простором, в якому беруться точки, буде сфера, то геодезичний відрізок, який їх з'єднує буде не евклідовим відрізком (він не належить сфері), а буде дугою великого кола на сфері.

Якщо p0 та p1 початок і кінець дуги, а t параметр, 0 ≤ t ≤ 1.

Обчислимо Ω — кут дуги, отримаємо cos Ω = p0p1, n-вимірний скалярний добуток одиничних векторів. Отримаємо формулу

Slerp(p0,p1,t)=sin(1t)ΩsinΩp0+sintΩsinΩp1.

Вона симетрична відносно кінців дуги Slerp(p0,p1,t) = Slerp(p1,p0,1−t).

Якщо Ω — дуже маленький кут, настільки, що можуть виникнути помилки при діленні на sinΩ, тому можна використовувати звичайну лінійну інтерполяцію (оскільки при маленьких значеннях Ω: sin(Ω)Ω, sin(t*Ω)t*Ω, і так далі).

Запис за допомогою кватерніонів

Шаблон:Докладніше

Записавши одиничний кватерніон у вигляді q = cos Ω + v sin Ω, де v тривимірний одиничний вектор, отримаємо q t = cos tΩ + v sin tΩ.

записавши q = q1qШаблон:Su, отримаємо

 Slerp(q0,q1;t) =q01tq1t
=q0(q01q1)t
=q1(q11q0)1t
=(q0q11)1tq1
=(q1q01)tq0

Використовується лінійна залежність між кутом повороту і степенем кватерніона.

Посилання

Шаблон:Refimprove