Slerp

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

Геометрична інтерпретація[ред.ред. код]

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

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

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

 \mathrm{Slerp}(p_0, \, p_1, \, t) = \frac{\sin {(1-t)\Omega}}{\sin \Omega} p_0 + \frac{\sin t\Omega}{\sin \Omega} p_1.

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

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

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

Докладніше у статті Кватерніони і повороти простору

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

записавши q = q1q−10, отримаємо

\ \mathrm{Slerp}(q_0, q_1; t) =q_0^{1-t} q_1^t
=q_0 (q_0^{-1} q_1)^t
=q_1 (q_1^{-1} q_0)^{1-t}
=(q_0 q_1^{-1})^{1-t} q_1
=(q_1 q_0^{-1})^t q_0

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

Посилання[ред.ред. код]