По большей части, большинство из нас, может просто по памяти воспроизвести матрицу вращения в плоскости. Но как получить матрицу вращения вокруг 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$ - единичный вектор направления оси вращения.
Комментариев нет:
Отправить комментарий