Всем привет! Как вы уже, наверно, знаете (если не знаете — то советую узнать), в двумерной геометрии весьма удобно использовать комплексные числа для задания точек и вращений. Сейчас я хочу рассказать вам о похожей конструкции, которая позволяет эффективно работать с трёхмерным пространством. Базовые познания в аналитической геометрии желательны.
Итак, кватернион — это гиперкомплексное число, которое может быть представлено в виде , где
— действительные числа, а
— мнимые единицы. На кватернионах может быть введена операция умножения, которая задана тождеством
. Из этого тождества может быть выведена вся таблица умножения кватернионных единиц:
Отметим, что заданное таким образом кватернионное умножение обладает свойствами ассоциативности и дистрибутивности относительно сложения, в чём при желании можно убедиться, но не является коммутативным.
Четвёрку можно рассматривать как ортонормированный базис в четырёхмерном линейном пространстве, а кватернионы представлять в виде
, где
— вектор трёхмерного линейного пространства с базисом
. Компоненты
и
называются соответственно скалярной и векторной составляющими кватерниона. Пусть у нас есть кватернионы
и
. Тогда их произведение можно посчитать как
. Рассмотрим подробнее умножение двух чисто векторных кватернионов.
(x1i + y1j + z1k)(x2i + y2j + z2k) = - (x1x2 + y1y2 + z1z2) + i(y1z2 - z1y2) + j(z1x2 - x1z2) + k(x1y2 - y1x2).
Заметим, что это можно кратко переписать как , где
и
— соответственно векторное и скалярное произведения векторов
и
. Таким образом, окончательно получаем формулу для произведения кватернионов
.
Наконец, обратим внимание, что кватернион может также быть задан в виде
, где
— комплексные числа. В таком случае произведение кватернионов
и
может быть записано как
, где
— сопряжённое к
комплексное число.
Покажем, что любой ненулевой кватернион обратим. Действительно, по аналогии с комплексными числами можно рассмотреть для кватерниона кватернион
, который назовём сопряжённым к нему. Из выведенной выше формулы можно видеть, что
. Таким образом, мы можем ввести для кватернионов норму
и обратный элемент
. Обратим внимание на то, что
. Действительно, из формулы умножения прямо следует
. Отсюда сразу следует, что
и
.
Здесь и далее будем считать векторы кватернионами с нулевой скалярной частью. Введём операцию сопряжения вектора a кватернионом g, результатом которой является вектор[1] . Это равенство эквивалентно тому, что
. Пусть
, тогда, расписывая, получаем
. Рассматривая отдельно скалярные и векторные части, получаем:
![](https://espresso.codeforces.com/8999f54b233ad133b11d2c8a339d9fb0020f80dc.png)
Обратим внимание, что в силу мультипликатовности нормы кватернионов, нормы векторов и
равны. Первое уравнение системы означает, что равны также их ортогональные проекции на ось
. Отсюда необходимо следует, что
получается из
поворотом вокрут
на некоторый угол. Найдём этот угол. Будем считать, что
. Если это не так, отнормируем g, поделив его на квадратный корень из нормы, на векторе
это не отразится. Теперь мы можем считать, что
, где
. Теперь посмотрим, что такое
.
[1] . Скалярная часть этого произведения равна
.