четверг, 6 января 2022 г.

Как вывести матрицу 3-мерного вращения?

По большей части, большинство из нас, может просто по памяти воспроизвести матрицу вращения в плоскости. Но как получить матрицу вращения вокруг 3-мерного вектора? Попробуем разобраться.

Для начала освежим сведения об эквивалентности перехода от мнимых единиц кватернионов к векторам и их основные свойства.

Если есть векторная часть кватерниона $$ a=ia_1+ja_2+ka_3 $$ то она отображается в вектор $$ a=\left( \begin{array}{c} a_1 \\ a_2 \\ a_3 \end{array} \right) $$ Скалярное произведение $$ (a,b)=a_1b_1+a_2b_2+a_3b_3 $$ Векторное произведение $$ [a,b]=\left( \begin{array}{c} a_3b_2 - a_2b_3 \\ a_1b_3 - a_3b_1 \\ a_2b_1 - a_1b_2 \end{array} \right) $$ У них используем свойства, что если векторы $a$ и $b$ ортогональны друг другу, то их скалярное произведение равно 0. А также то, что результат векторного произведения $a$ и $b$ ортогонален и $a$ и $b$ одновременно: $$ ([a,b],a)=0 $$ $$ ([a,b],b)=0 $$ Векторное произведение сонаправленных векторов при этом имеет не произвольный любой результат, а равно нулю.

Скалярное произведение в рассматриваемом случае коммутативно: $$ (a,b)=(b,a) $$ И векторное антикоммутативно: $$ [a,b]=-[b,a] $$ Теперь рассмотрим кватернионное вращение на угол $\alpha$: $$ x'=e^{\alpha/2}xe^{-\alpha/2} $$ Здесь $\alpha$ - вектор вращения (векторная часть кватерниона): $$ \alpha = i\alpha_1+j\alpha_2+k\alpha_3 $$ Экспонента от кватерниона $\alpha/2$ равна: $$ e^{\alpha/2}=\cos\alpha/2+ \frac{i\alpha_1+j\alpha_2+k\alpha_3} {\sqrt{\alpha_1^2+\alpha_2^2+\alpha_3^2}}\sin\alpha/2 $$ Здесь мы вынесли $1/2$ из числителя и знаменателя дроби и сократили. При этом полагаем что $\alpha$ не ноль и не бесконечность. В случае если $\alpha=0$ экспонента равна 1: $$ e^{0/2}=1 $$ В случае же бесконечности $\alpha=\infty$ результат неопределен в силу периодичности функций $\cos$ и $\sin$.

В силу того, что выражение $$ \frac{i\alpha_1+j\alpha_2+k\alpha_3} {\sqrt{\alpha_1^2+\alpha_2^2+\alpha_3^2}} $$ имеет величину 1, обозначим её для краткости через $a$: $$ a=\frac{i\alpha_1+j\alpha_2+k\alpha_3} {\sqrt{\alpha_1^2+\alpha_2^2+\alpha_3^2}} $$ $$ |a|^2=1 $$ Итого, общее преобразование вращения можем записать как: $$ x'=(\cos\alpha/2+a\sin\alpha/2)x(\cos\alpha/2-a\sin\alpha/2) $$ Поскольку и $a$ и $x$ есть трехмерные векторы, раскроем это выражение уже переходя от кватернионов к векторам, учитывая что произведение в кватернионах эквивалентно произведению в векторах: $$ ab=-(a,b)+[a,b] $$ Первое умножение: $$ x'=(\cos\alpha/2-(a,x)\sin\alpha/2+[a,x]\sin\alpha/2) (\cos\alpha/2-a\sin\alpha/2) $$ Второе умножение: $$ \begin{array}{c} x'=\cos\alpha/2 x+(x,a)\cos\alpha/2\sin\alpha/2- \\ -[x,a]\cos\alpha/2\sin\alpha/2-(a,x)\sin\alpha/2\cos\alpha/2+ \\ +a(a,x)\sin^2\alpha/2+[a,x]\sin\alpha/2\cos\alpha/2+ \\ +([a,x],a)\sin^2\alpha/2-[[a,x],a]\sin^2\alpha/2 \end{array} $$ Здесь величина $$ ([a,x],a) $$ равна 0 в силу свойств векторного произведения.

Двойное векторное произведение раскрывается до выражения: $$ [[a,x],a]=-a(x,a)+x(a,a) $$ В силу коммутативности скалярного произведения величина $$ (x,a)\cos\alpha/2\sin\alpha/2-(a,x)\sin\alpha/2\cos\alpha/2 $$ также равна нулю.

Немного сократим и используя формулу из тригонометрии: $$ 2\sin\alpha/2\cos\alpha/2=\sin\alpha $$ И учтем, что $x(a,a)=x$ в силу того что $(a,a)=|a|^2=1$

Итого, промежуточный результат упрощений: $$ \begin{array}{c} x'=x\cos^2\alpha/2+[a,x]\sin\alpha+a(a,x)\sin^2\alpha/2+ \\ +a(x,a)\sin^2\alpha-x\sin^2\alpha/2 \end{array} $$ Теперь учтем, что $$ \cos^2\alpha/2-\sin^2\alpha/2=\cos\alpha $$ и что $$ 2\sin^2\alpha/2=1-\cos\alpha $$ И в итоге получаем: $$ \begin{array}{c} x'=x\cos\alpha+[a,x]\sin\alpha+ \\ +a(a,x)(1-\cos\alpha) \end{array} $$ Все три слагаемых есть линейные формы от компонент вектора $x$, значит в итоге значение $x'$ есть произведение суммы трех матриц на вектор $x$ или одной матрицы, которая есть сумма этих трех.

Первое слагаемое дает: $$ \left( \begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right)\cos\alpha \left( \begin{array}{c} x_1 \\ x_2 \\ x_3 \end{array} \right) $$ Второе слагаемое дает: $$ \left( \begin{array}{ccc} 0 & -a_3 & a_2 \\ a_3 & 0 & -a_1 \\ -a_2 & a_1 & 0 \end{array} \right)\sin\alpha \left( \begin{array}{c} x_1 \\ x_2 \\ x_3 \end{array} \right) $$ и третье слагаемое дает: $$ \left( \begin{array}{ccc} a_1a_1 & a_1a_2 & a_1a_3 \\ a_2a_1 & a_2a_2 & a_2a_3 \\ a_3a_1 & a_3a_2 & a_3a_3 \end{array} \right)(1-\cos\alpha) \left( \begin{array}{c} x_1 \\ x_2 \\ x_3 \end{array} \right) $$ Здесь $\alpha$ - абсолютная величина угла вращения и $a$ - единичный вектор направления оси вращения.

Комментариев нет:

Отправить комментарий