3-9 ПОВОРОТ ВОКРУГ ПРОИЗВОЛЬНОЙ ОСИ В ПРОСТРАНСТВЕ
Обобщенный случай поворота вокруг произвольной оси в пространстве встречается часто, например в робототехнике, мультипликации, моделировании. Следуя логике предыдущего обсуждения, поворот вокруг произвольной оси в пространстве выполняется с помощью переноса и простых поворотов вокруг координатных осей. Так как метод поворота вокруг координатной оси известен, то основная идея заключается в том, чтобы совместить произвольную ось вращения с одной из координатных осей.

Рис. 3-6 Несколько поворотов относительно локальной системы координат.
Предположим, что произвольная ось в пространстве проходит через точку
с направляющим вектором
. Поворот вокруг этой оси на некоторый угол
выполняется по следующему правилу:
- выполнить перенос так, чтобы точка
находилась в начале системы координат;
- выполнить соответствующие повороты так, чтобы ось вращения совпала с осью
;
- выполнить поворот на угол
вокруг оси
;
- выполнить преобразование, обратное тому, что позволило совместить ось вращения с осью
;
- выполнить обратный перенос.
В общем случае для того, чтобы произвольная ось, проходящая через начало координат, совпала с одной из координатных осей, необходимо сделать два последовательных поворота вокруг двух других координатных осей. Для совмещения произвольной оси вращения с осью
сначала выполним поворот вокруг оси
, а затем вокруг оси
. Чтобы определить угол поворота
вокруг оси
, используемый для перевода произвольной оси в плоскость
, спроецируем сначала на плоскость
направляющий единичный вектор этой оси (рис. 3-7а). Компоненты
и
спроецированного вектора равны
- и
-компонентам единичного направляющего вектора оси вращения.
Из рис. 3-7а следует, что
(3-18)
и
,
. (3-19)

Рис. 3-7 Повороты, необходимые для совмещения с осью
единичного вектора
. (а) Поворот вокруг
; (b) поворот вокруг
.
После перевода в плоскость
с помощью поворота вокруг оси
,
-компонента единичного вектора равна
, а
-компонента равна
, т.е.
-компоненте направляющего вектора, как это показано на рис. 3-7b. Длина единичного вектора равна, конечно, 1. Таким образом, угол поворота
вокруг оси
, необходимый для совмещения произвольной оси с осью
, равен
,
. (3-20)
Тогда полное преобразование можно представить в виде
, (3-21)
где матрица переноса равна
. (3-22)
Матрица преобразования поворота вокруг оси 
(3-23)
и вокруг оси 
. (3-24)
И, наконец, вращение вокруг произвольной оси задается матрицей поворота вокруг оси 
. (3-25)
На практике углы
и
не вычисляются явным образом. Элементы матриц поворотов
и
в (3-21) получаются из уравнений (3-18)-(3-20) за счет выполнения двух операций делениия и извлечения квадратного корня. Хотя данные результаты были разработаны для произвольной оси в первом квадранте, они применимы во всех квадрантах.
Если компоненты направляющего вектора произвольной оси неизвестны, то, зная вторую точку
на оси, их можно определить, нормализовав вектор, соединяющий первую и вторую точки. Более точно вектор оси из
в
равен
.
Нормализация дает компоненты направляющего вектора:
. (3-26)
Более полно этот метод иллюстрируется в следующем примере.
Пример 3-10 Поворот вокруг произвольной оси
Рассмотрим куб с одним отсеченным углом, изображенный на рис. 3-8а. Координатные векторы вершин равны
.

Рис. 3-8 Поворот вокруг произвольной оси.
Куб необходимо повернуть на вокруг оси, проходящей через точку и противоположный угол на диагонали. Ось направлена из точки в противоположный угол и проходит через центр угловой грани.
Сначала определим компоненты направляющего единичного вектора оси вращения. Учитывая, что угол, отрезанный треугольником также лежит на оси, из (3-26) следует, что

.
С помощью уравнений (3-18)-(3-20) получаем

и
,
.
Так как точка лежит на оси вращения, матрица переноса равна
.
Тогда матрицы поворотов, совмещающих произвольную ось вращения с осью , имеют вид:

и
.
Обратные матрицы , и получаются с помощью подстановки значений , и для углов , и , соответственно, в уравнения (3-22)-(3-24).
Объединив , , , получим
.
Преобразованные промежуточные координаты равны
.
Этот промежуточный результат изображен на рис. 3-8b. Заметим, что точка равна .
Вращение вокруг произвольной оси теперь эквивалентно вращению вокруг оси . Следовательно (см. (3-7)),
.
Преобразованный объект возвращается в его «исходное» местоположение в пространстве с помощью преобразования
.
Этот результат можно получить либо обращением и объединением матриц, составляющих , либо обращением самой матрицы . Заметим, между прочим, что представляют только повороты. Верхняя левая -подматрица является точным транспонированием верхней левой -подматрицы .
Координаты результата равны
,
где
.
На рис. 3-8с изображен преобразованный объект.
|