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с изображен преобразованный объект.
|