А, значит, это произведение чисто вещественно. Что более нетривиально — модуль произведения, как и в комплексных числах, оказывается равен произведению модулей:
В качестве шага в сторону — отсюда получается, что если два числа представимы в виде суммы четырёх квадратов, то представимо в виде суммы четырёх квадратов и их произведение. Поэтому теорему Лагранжа о том, что в виде суммы четырёх квадратов представляется любое натуральное число, достаточно доказывать лишь для простых чисел.
Но давайте вернёмся к кватернионам и к их младшим братьям — комплексным числам. Если у нас есть комплексное число q, равное 1 по модулю, то можно рассмотреть умножение на q как отображение комплексной плоскости в себя,
M_q : z-> qz.
И поскольку |qz|=|q|*|z| — это движение. Причём сохраняющее ноль, и несложно (например, по непрерывности) увидеть, что это поворот. На угол, равный аргументу q — потому что 1 переходит в q. Поэтому при перемножении комплексных чисел аргументы складываются — и формулы для косинуса и синуса суммы это на самом деле одна формула,
M_q : z-> qz.
И поскольку |qz|=|q|*|z| — это движение. Причём сохраняющее ноль, и несложно (например, по непрерывности) увидеть, что это поворот. На угол, равный аргументу q — потому что 1 переходит в q. Поэтому при перемножении комплексных чисел аргументы складываются — и формулы для косинуса и синуса суммы это на самом деле одна формула,
— только в ней раскрыты скобки. В частности, тот самый "минус" для косинуса суммы,
Но это совсем стандартные вещи — а вернёмся к кватернионам. Они некоммутативные — и если есть кватернион q с |q|=1, то можно умножать кватернионы на q как слева, так и справа:
И оба этих умножения будут движениями четырёхмерного пространства R^4=H, потому что |qz|=|zq|=|z|.
Да, кстати. Точно так же, как единичная окружность на комплексной плоскости является группой по умножению — точно так же (уже некоммутативной!) группой по умножению будет трёхмерная сфера S^3 кватернионов единичной длины.
Так вот: давайте возьмём такой "единичный" кватернион q и умножим на него слева — и на обратный к нему \conj(q)=q^{-1} справа:
Во-первых, получилось движение четырёхмерного пространства (потому что и по отдельности эти умножения были движениями).
Во-вторых, единицу — а значит, и всю вещественную прямую — оно оставляет на месте.
И значит, оставляет на месте как множество и трёхмерное пространство чисто мнимых кватернионов — ортогональное дополнение к вещественной прямой.
То есть всякому кватерниону единичной длины q сопоставляется вращение трёхмерного пространства {bi+cj+dk} чисто мнимых кватернионов.
Причём это отображение почти взаимно-однозначно — единственное, что в q можно поменять, это знак. (Что не очень сложно проверить.)
Поэтому вращение трёхмерного пространства кодируется кватернионом единичной длины, заданным однозначно с точностью до знака. Иными словами, группа S^3 двулистно накрывает группу SO(3).
Поэтому вращение трёхмерного пространства кодируется кватернионом единичной длины, заданным однозначно с точностью до знака. Иными словами, группа S^3 двулистно накрывает группу SO(3).
И — вот такое вполне применяется для задания/хранения ориентации что для спутников, что в видеоиграх.
В отличие от углов Эйлера — "курс, тангаж, крен" — тут нет направления, где будет "деление на ноль" (у летящего вертикально вверх истребителя курса нет), легко считается композиция (перемножить кватернионы, и вся недолга).
В отличие от матриц — по крайней мере, ошибки округления (если экономить память) не уведут нас с множества ортогональных матриц, и не будет вопроса, "как бы получше выбрать ближайшую ортогональную матрицу", когда ошибки накопятся.
В отличие от углов Эйлера — "курс, тангаж, крен" — тут нет направления, где будет "деление на ноль" (у летящего вертикально вверх истребителя курса нет), легко считается композиция (перемножить кватернионы, и вся недолга).
В отличие от матриц — по крайней мере, ошибки округления (если экономить память) не уведут нас с множества ортогональных матриц, и не будет вопроса, "как бы получше выбрать ближайшую ортогональную матрицу", когда ошибки накопятся.