Кватерніон
можна представити у вигляді пари скаляра та 3-вимірного вектора:
,
множення кватерніонів буде виражатись через скалярний та векторний добутки 3-вимірних векторів:
![{\displaystyle \ \mathbf {q_{1}q_{2} =(s_{1},{\vec {v_{1})(s_{2},{\vec {v_{2})=(s_{1}s_{2}-{\vec {v_{1}\cdot {\vec {v_{2},\;\;s_{1}{\vec {v_{2}+s_{2}{\vec {v_{1}+{\vec {v_{1}\times {\vec {v_{2}).}](https://wikimedia.org/api/rest_v1/media/math/render/svg/87d2776f8b8e3f72d00d7a3df42df290b32c979f)
Виразимо векторний добуток через добуток кватерніонів:
![{\displaystyle \ {\vec {v_{1}\times {\vec {v_{2}={\mathbf {q_{1}q_{2}-q_{2}q_{1} \over 2}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e29cfd561170b1ad8c6009a6494fc667a53726a7)
Поворот точки навколо осі в 3-вимірному просторі
Покажемо що результатом повороту вектора
на кут
відносно осі
(одиничний вектор) буде:
, де
— чисто векторний кватерніон,
— чисто векторний кватерніон,
![{\displaystyle \mathbf {q} =\left(\cos {\frac {\alpha }{2},\;\;{\vec {u}\sin {\frac {\alpha }{2}\right),\qquad |\mathbf {q} |=1,\quad \mathbf {q^{-1}=\mathbf {q^{*} } .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2bb251d1755df2c51c11994bf1447f6830546733)
Перепишемо останній кватерніон в іншій формі:
![{\displaystyle \mathbf {q} =\cos {\frac {\alpha }{2}+\mathbf {u} \cdot \sin {\frac {\alpha }{2};}](https://wikimedia.org/api/rest_v1/media/math/render/svg/92b623e192bb59a92ec7632aed6abdb499d64707)
![{\displaystyle \mathbf {q^{-1} =\cos {\frac {\alpha }{2}-\mathbf {u} \cdot \sin {\frac {\alpha }{2}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/09ce64ee9b1304fc32f11c2ccbc93af1271255b4)
Спершу обчислимо необхідний нам вираз (використали властивість подвійного векторного добутку):
![{\displaystyle \ \mathbf {uvu} =({\vec {u}\times {\vec {v})\times {\vec {u}-({\vec {u}\cdot {\vec {v}){\vec {u}={\vec {v}-2{\vec {u}({\vec {u}\cdot {\vec {v}).}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f2385158b0b48e7bb4a592f9333fd2768a346e81)
Обчислимо добуток:
![{\displaystyle \mathbf {v} '=\left(\cos {\frac {\alpha }{2}+\mathbf {u} \sin {\frac {\alpha }{2}\right)\;\mathbf {v} \;\left(\cos {\frac {\alpha }{2}-\mathbf {u} \sin {\frac {\alpha }{2}\right)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ce07ceb5dcf5b2ade0ed9d54637347a0e591bb09)
![{\displaystyle {\begin{matrix}\mathbf {v} '&=&-\mathbf {uvu} \sin ^{2}{\frac {\alpha }{2}&+&\mathbf {v} \cos ^{2}{\frac {\alpha }{2}&+&(\mathbf {uv-vu} )\sin {\frac {\alpha }{2}\cos {\frac {\alpha }{2}\\&=&(2{\vec {u}({\vec {u}\cdot {\vec {v})-{\vec {v})\sin ^{2}{\frac {\alpha }{2}&+&{\vec {v}\cos ^{2}{\frac {\alpha }{2}&+&({\vec {u}\times {\vec {v})(2\sin {\frac {\alpha }{2}\cos {\frac {\alpha }{2})\\&=&{\vec {u}({\vec {u}\cdot {\vec {v})(2\sin ^{2}{\frac {\alpha }{2})&+&{\vec {v}(\cos ^{2}{\frac {\alpha }{2}-\sin ^{2}{\frac {\alpha }{2})&+&({\vec {u}\times {\vec {v})\sin \alpha \\&=&{\vec {u}({\vec {u}\cdot {\vec {v})(1-\cos \alpha )&+&{\vec {v}\cos \alpha &+&({\vec {u}\times {\vec {v})\sin \alpha \\&=&{\vec {u}({\vec {u}\cdot {\vec {v})&+&({\vec {v}-{\vec {u}({\vec {u}\cdot {\vec {v}))\cos \alpha &+&({\vec {u}\times {\vec {v})\sin \alpha \\&=&{\vec {v}_{\|}&+&{\vec {v}_{\bot }\cos \alpha &+&({\vec {u}\times {\vec {v}_{\bot })\sin \alpha ,\end{matrix}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2d19a389a795388820f56f2775fdd12ee081a0db)
де
та
компоненти вектора
паралельні і перпендикулярні до
відповідно:
![{\displaystyle {\vec {v}={\vec {v}_{\|}+{\vec {v}_{\bot }](https://wikimedia.org/api/rest_v1/media/math/render/svg/fc3b57d41813d9dcdb57de88b773179a2308bcb8)
![{\displaystyle {\vec {u}\;\|\;{\vec {v}_{\|}](https://wikimedia.org/api/rest_v1/media/math/render/svg/76ea038c1d62ddc52fb584f3fe403083c2f8fae9)
![{\displaystyle {\vec {u}\;\bot \;{\vec {v}_{\bot }.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/67006cd1e485e3fbfe11f020ba2b1127d84ddc60)
Кожен з трьох доданків є ортогональним до двох інших.
Кількість операцій
Обчислення результату двох поворотів
|
Зберігання |
Множення |
Додавання
|
Матриця повороту ![{\displaystyle \mathbf {R=R_{2}R_{1} }](https://wikimedia.org/api/rest_v1/media/math/render/svg/07cf760d8c218912508011c68ec07299167f4dbd) |
9 |
27 |
18
|
Кватерніон ![{\displaystyle \mathbf {q=q_{2}q_{1} }](https://wikimedia.org/api/rest_v1/media/math/render/svg/38aa40b1cea5d00a3434819d8117a77957d25444) |
4 |
16 |
12
|
Обчислення повороту точки
|
Зберігання |
Множення |
Додавання
|
Матриця повороту ![{\displaystyle \mathbf {v'=Rv} }](https://wikimedia.org/api/rest_v1/media/math/render/svg/d79e92d529b9b5370851dec321afc7802e0cab6b) |
9 |
9 |
6
|
Кватерніон ![{\displaystyle \mathbf {v'=qvq^{-1} }](https://wikimedia.org/api/rest_v1/media/math/render/svg/69ada5461a3014d5e8514bd9c9a778ce056e1689) |
4 |
15 |
12
|
Матриця повороту
- Поворотові за допомогою одиничного кватерніона
відповідає наступна матриця повороту
![{\displaystyle \mathbf {R} ={\begin{pmatrix}1-2(c^{2}+d^{2})&2bc-2ad&2ac+2bd\\2ad+2bc&1-2(b^{2}+d^{2})&2cd-2ab\\2bd-2ac&2ab+2cd&1-2(b^{2}+c^{2})\\\end{pmatrix}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/74b264404c59e94a64d198548d695a05f77bf6a2)
- Якщо представимо кватерніон у вигляді
тоді
![{\displaystyle \mathbf {R} _{\vec {u}(\alpha )=\mathbf {uu} ^{T}+(I-\mathbf {uu} ^{T})\cos \alpha +{\big [}\mathbf {u} {\big ]}_{\times }\sin \alpha .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4215f5b589350343e20a3557f53b92ca29ca8480)
Доданки ідентичні доданкам із формули отриманої через кватерніони.
Для спрощення обчислень, зведемо подібні доданки та вернемось до векторної форми (формула повороту Родрігеса):
![{\displaystyle \mathbf {v} '=\mathbf {u} (\mathbf {u} \cdot \mathbf {v} )(1-\cos \alpha )+\mathbf {v} \cos \alpha +(\mathbf {u} \times \mathbf {v} )\sin \alpha .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/56dca1bbaf9c789e98df8fc95f85103e1f76b182)
Перший та другий доданки вже не є обов'язково ортогональними.