Теория групп 7 — Группа трехмерных поворотов SO(3)
По аналогии с группой поворотов на плоскости SO(2) можно построить группу поворотов в трехмерном пространстве. Она называется SO(3) – специальная ортогональная размерности 3. Инвариантной при операции группы будет уже сфера. Или, говоря на языке векторов, не будет меняться длина вектора, исходящего из начала координат.
Группа SO(3) содержит ортогональные матрицы размером 3х3 с единичным детерминантом.
Ортогональные матрицы — это матрицы для которых выполняется требование, что транспонированная матрица равна обратной матрице. Такие матрицы при умножении на вектор не меняют его длину.
Возьмем какой-нибудь вектор с декартовыми координатами [x y z]. Квадрат его длины можно найти как скалярное произведение вектора с самим собой. В матричной форме это умножение вектор-строки на вектор-столбец, то есть транспонированного вектора на исходный.
Подействуем на вектор матрицей поворота R. Квадрат длины вектора находится умножением транспонированного вектора на данный. Транспонирование произведений двух матриц равно произведению транспонированных матриц, но в обратном порядке. Порядок следования множителей меняется и мы видим, что для сохранения неизменной длины RT*R=I. Или что тоже самое RT=R-1. Такое условие называется условием ортогональности.
Ограничение на детерминант равным единице приводит к тому, что исключаются еще и матрицы производящие инверсию, отражения векторов. В итоге матрицы группы SO(3) осуществляют только операции поворота.
Теперь у нас имеются три параметра группы Ли – угол поворота вокруг оси x, оси y и оси z. Обозначим их αx, αy, αz.
Элементы группы SO(3) Rx, Ry, Rz также как и для группы SO(2) можно представить квадратными матрицами с синусами и косинусами. Но они будут размерностью 3х3 поскольку умножаются на вектор-столбец с тремя компонентами x y z. Группы SO(2) вращений в плоскостях xy yz и zx являются подгруппами группы SO(3).
Можно найти генераторы группы SO(3) взяв производную от этих матриц и приравняв угол нулю. Как и для группы SO(2) они очень простые и содержат только нули, единицы и минус единицы.
Элементы группы Ли всегда получаются матричным экспоненцированием генераторов группы.
Заметьте, что группа SO(3) неабелева. Повернуть вокруг оси х на угол αx, а потом повернуть вокруг оси y на угол αy не то же самое, что повернуть сначала вокруг оси y на угол αy, а потом вокруг оси х на угол αx.
Rx* Ry ≠ Ry*Rx
То есть коммутатор элементов Rx и Ry, обозначаемый квадратными скобками, не равен нулю. Перемножение матриц Rx и Ry в разном порядке даст разный результат.
В генераторах группы также содержится информация о том, что группа SO(3) неабелева. Генераторы тоже не коммутируют. Практически все свойства групп Ли заложены в генераторах. Так для любой группы Ли справедливо утверждение, что если генераторы не коммутируют, то группа неабелева.
Поскольку экспонента связывает элементы с генераторами, то мы можем записать последовательность двух поворотов в виде умножения двух экспонент. Может показаться, что мы можем воспользоваться свойством экспоненциальной функции и переписать в выражение сложив аргументы. Но данная формула не справедлива, если операторы в показателе экспонент не коммутируют! Линейные операторы коммутируют относительно сложения, но не относительно умножения, поэтому мы не можем так просто перейти от умножения к сумме. Если такое необходимо, то придется воспользоваться формулой Бэйкера-Кэмпбелла-Хаусдорфа.
Ну и напоследок покажем как приведенная математика может использоваться в компьютерной графике. Матлаб конечно не для компьютерной графики предназначен, но в нем удобно перемножать матрицы.
Зададим координаты восьми вершин куба. Матрицы генераторов группы SO(3). Небольшие углы поворота вокруг осей x y z. Поворот куба осуществляется одной строчкой простым матричным умножением элементов группы на прямоугольную матрицу координат точек. Далее идет только отрисовка линий. Вот что получается при запуске программы. Заметьте, что в программе нет ни одного косинуса или синуса, лишь матрицы с нулями и единицами.