Формула повороту Родрігеса

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

Шаблон:UniboxУ теорії тривимірних обертань, формула повороту Родрігеса (названа на честь Шаблон:Li) — дієвий алгоритм для обертання вектора у просторі, за заданими віссю та кутом.

Якщо 𝐯 — вектор у 3 і 𝐤 — одиничний вектор, що описує вісь обертання, навколо якої ми хочемо повернути 𝐯 на кут θ, то формула Родрігеса має вигляд:

𝐯rot=𝐯cosθ+(𝐤×𝐯)sinθ+𝐤(𝐤𝐯)(1cosθ).

Виведення

Формула обертання Родрігеса обертає v на кут θ навколо осі z через розкладання його на складові паралельні і перпендикулярні до z, і, обертаючи тільки перпендикулярну складову

Для певної осі обертання z, яка представлена одиничним вектором k = (kX, kY, kZ), і вектором v = (vX, vY, vZ), який ми хочемо повернути, вектор

𝐯z=(𝐤𝐯)𝐤

є складовою v паралельною до z, також відомою як проєкція вектора v на k, і вектор

𝐯x=𝐯𝐯z=𝐯(𝐤𝐯)𝐤

є проєкцією v на площину xy ортогональну до z, відомою як відкидання вектора.

Зауважте, що ми вибрали систему відліку xyz, в якій z вісь вирівняна з віссю повороту, а x вісь з відкиданням вектора v від k. Це спрощує демонстрацію, бо це має на увазі, що v лежить у площині xz і його складова vy є нулем. Однак, xyz не збігається з XYZ в якій вектори v, k, vx і vz представлені. Наприклад, v = (vX, vY, vZ) ≠ (vx, vy, vz). Інакше кажучи, формула Родрігеса незалежна від орієнтації в просторі системи відліку XYZ у якій v і k представлені.

Далі

𝐰=𝐤×𝐯.

Зауважимо, що vx і w мають одну й ту саму довжину. За визначенням векторного добутку, довжина w становить:

|𝐰|=|𝐤×𝐯|=|𝐤||𝐯|sinφ 

де φ позначає кут між z і v. з того, що k має одиничну довжину,

|𝐰|=|𝐤×𝐯|=|𝐯|sinφ.

Це збігається з довжиною vx, обрахованою тригонометрично так:

|𝐯x|=|𝐯|cos(π/2φ)=|𝐯|sinφ.

Отже w можна розглядати як копію vx обернуту на 90° навколо z. Використовуючи тригонометрію, ми можемо повернути vx на θ навколо z, щоб отримати vx rot. Його два компоненти щодо x і y є vxcosθ і wsinθ, відповідно. Таким чином,

𝐯x rot=𝐯xcosθ+𝐰sinθ=(𝐯(𝐤𝐯)𝐤)cosθ+(𝐤×𝐯)sinθ.

vx rot також можна записати як проєкцію на xy вектора, який ми повертаємо, vrot. Тому що поворот навколо z не зачіпає vz, другий компонент vrot (тобто проєкція на z) збігається з vz. Отже,

𝐯rot=𝐯x rot+𝐯z rot=𝐯x rot+𝐯z=(𝐯(𝐤𝐯)𝐤)cosθ+(𝐤×𝐯)sinθ+(𝐤𝐯)𝐤=𝐯cosθ+(𝐤×𝐯)sinθ+𝐤(𝐤𝐯)(1cosθ),

як і вимагалось.

Матричний запис

Представивши v і k у вигляді вектор-стовпців і 𝐤 як матрицю векторного добутку [𝐤]×, тобто,

[𝐤]×𝐯=𝐤×𝐯=[0k3k2k30k1k2k10]𝐯,

Формулу Родрігеса можна записати так:

𝐯rot=𝐯cosθ+([𝐤]×𝐯)sinθ+𝐤(𝐤𝖳𝐯)(1cosθ)=𝐯cosθ+[𝐤]×𝐯sinθ+𝐤𝐤𝖳𝐯(1cosθ).

Використовуючи розклад потрійного векторного добутку, це можна записати як:

𝐯rot=([𝐤]×𝐯)sinθ+(𝐤(𝐤𝖳𝐯)𝐯(𝐤𝐤))(1cosθ)+𝐯(𝐤𝖳𝐤)=𝐯+([𝐤]×𝐯)sinθ+([𝐤]×[𝐤]×𝐯)(1cosθ).

бо 𝐤𝖳𝐤=1 для нормалізованого вектора.

Остаточно, матриця повороту така:

𝐑=𝐈+(sinθ)[𝐤]×+(1cosθ)[𝐤]×[𝐤]×.

Кватерніони і формула повороту

Якщо ми хочемо повернути 𝐯 на кут θ навколо 𝐤, тоді ми можемо записати це як кватерніон q=(cos(θ/2),sin(θ/2)). Це одиничний кватерніон.

Тоді prot=qvq1, що після виконання множень переходить у формулу повороту Родрігеса.

Див. також

Посилання