Домівка > Математика > Похідна кватерніона

Похідна кватерніона

Чому кватерніони, а не матриці повороту

З багатьох причин одиничні кватерніони, чотириелементні вектори, ліпший вибір ніж матриці повороту. Для симуляції руху твердого тіла найголовнішою причиною вибору кватерніонів є числовий самоплив. Припустимо, що ми відслідковуємо за орієнтацією твердого тіла за допомогою формули

\dot R(t) = \begin{pmatrix} 0 & -\omega_z(t) & \omega_y(t) \\ \omega_z(t) & 0 & -\omega_x(t) \\ -\omega_y(t) & \omega_x(t) & 0 \end{pmatrix} R(t),

тут R(t) є матрицею поворота, а вектор \omega(t) описує обертання тіла. Напрямок \omega(t) дає напрямок вісі обертання, а його довжина говорить про швидкість обертання.

По мірі того як ми оновлюємо R(t) згідно з цією формулою, ми неминуче отримуємо числовий самоплив. Числова помилка накопичуватиметься у коефіцієнтах матриці, і зрештою на екрані тіло відображатиметься скошеним.

Цю проблему можна полегшити через використання одиничних кватерніонів. Оскільки кватерніони мають лише чотири параметри, наявна лише одна додаткова змінна у порівнянні з трьома степенями свободи, що ми описуємо. Тоді як, матриця повороту має дев’ять параметрів. Отже, у кватерніонів ступінь надлишковості значно менший ніж у матриць повороту. У висліді, кватерніони мають значно менший самоплив порівняно з матрицями. З накопиченням числової помилки можна просто ренормалізувати кватерніон.

Кватерніон має такий вигляд s + v_x \mathbf{i} + v_y \mathbf{j} + v_z \mathbf{k}. Ми його запишемо як двійку [s, v]. Тоді добуток виглядає так

[s_1, v_1][s_2, v_2] = [s_1 s_2 - v_1 \cdot v_2, s_1 v_2 + s_2 v_1 + v_1 \times v_2].

Поворот на \theta радіан щодо одиничної осі u представлено одиничним кватерніоном

[\cos(\theta/2), sin(\theta/2)u].

Використовуючи кватерніони для представлення поворотів, якщо q_1, q_2 позначають повороти, тоді q_2 q_1 позначає сумарний поворот q_1 за яким іде q_2.

Отримання формули для похідної

Формула для \dot q(t) виводиться наступним чином. Припустимо, що тіло обертається зі сталою кутовою швидкістю \omega(t). Тоді поворот тіла за період \Delta t можна представити кватерніоном

[\cos \frac{|\omega(t)|\Delta t}{2}, \sin\frac{|\omega(t)|\Delta t}{2}\frac{\omega(t)}{|\omega(t)|}].

Обчислимо \dot q(t) у час t_0. У час t_0 + \Delta t ми маємо комбінацію двох поворотів

q(t_0+\Delta t) = [\cos \frac{|\omega(t_0)|\Delta t}{2}, \sin\frac{|\omega(t_0)|\Delta t}{2}\frac{\omega(t_0)}{|\omega(t_0)|}]q(t_0).

Підставляючи t = t_0 + \Delta t, отримуємо

q(t) = [\cos \frac{|\omega(t_0)|(t-t_0)}{2}, \sin\frac{|\omega(t_0)|(t-t_0)}{2}\frac{\omega(t_0)}{|\omega(t_0)|}]q(t_0).

Тепер дифиренціюємо q(t) у час t_0. Оскільки q(t_0) є сталою, то диференціюємо

[\cos \frac{|\omega(t_0)|(t-t_0)}{2}, \sin\frac{|\omega(t_0)|(t-t_0)}{2}\frac{\omega(t_0)}{|\omega(t_0)|}].

У час t = t_0,

\frac{d}{dt}\cos \frac{|\omega(t_0)|(t-t_0)}{2} = 0.

Аналогічно,

\frac{d}{dt}\sin\frac{|\omega(t_0)|(t-t_0)}{2} = \frac{|\omega(t_0)|}{2}.

Отже, у час t = t_0,

\dot q(t) = [0,\frac{|\omega(t_0)|}{2}\frac{\omega(t_0)}{|\omega(t_0)|}]q(t_0) = \frac{1}{2}[0,\omega(t_0)]q(t_0).

Добуток [0, \omega(t_0)]q(t_0) скорочено записуємо як \omega(t_0)q(t_0); таким чином,

\dot q(t) = \frac{1}{2}\omega(t)q(t).

Advertisements
Категорії:Математика Позначки:
  1. Коментарів ще немає.
  1. No trackbacks yet.

Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: