Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


3-9 ПОВОРОТ ВОКРУГ ПРОИЗВОЛЬНОЙ ОСИ В ПРОСТРАНСТВЕ

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

131.jpg

Рис. 3-6 Несколько поворотов относительно локальной системы координат.

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

-  выполнить перенос так, чтобы точка  находилась в начале системы координат;

-  выполнить соответствующие повороты так, чтобы ось вращения совпала с осью ;

-  выполнить поворот на угол  вокруг оси ;

-  выполнить преобразование, обратное тому, что позволило совместить ось вращения с осью ;

-  выполнить обратный перенос.

В общем случае для того, чтобы произвольная ось, проходящая через начало координат, совпала с одной из координатных осей, необходимо сделать два последовательных поворота вокруг двух других координатных осей. Для совмещения произвольной оси вращения с осью  сначала выполним поворот вокруг оси , а затем вокруг оси . Чтобы определить угол поворота  вокруг оси , используемый для перевода произвольной оси в плоскость , спроецируем сначала на плоскость  направляющий единичный вектор этой оси (рис. 3-7а). Компоненты  и  спроецированного вектора равны - и -компонентам единичного направляющего вектора оси вращения.

Из рис. 3-7а следует, что

  (3-18)

и

, .                    (3-19)

132.jpg

Рис. 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а. Координатные векторы вершин равны

.

134.jpg

Рис. 3-8 Поворот вокруг произвольной оси.

Куб необходимо повернуть на  вокруг оси, проходящей через точку  и противоположный угол на диагонали. Ось направлена из точки  в противоположный угол и проходит через центр угловой грани.

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

.

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

и

,

.

Так как точка  лежит на оси вращения, матрица переноса равна

.

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

и

.

Обратные матрицы ,  и  получаются с помощью подстановки значений ,  и  для углов ,  и , соответственно, в уравнения (3-22)-(3-24).

            Объединив , , , получим

.

Преобразованные промежуточные координаты равны

.

Этот промежуточный результат изображен на рис. 3-8b. Заметим, что точка  равна .

Вращение вокруг произвольной оси теперь эквивалентно вращению вокруг оси . Следовательно (см. (3-7)),

.

Преобразованный объект возвращается в его «исходное» местоположение в пространстве с помощью преобразования

.

Этот результат можно получить либо обращением и объединением матриц, составляющих , либо обращением самой матрицы . Заметим, между прочим, что  представляют только повороты. Верхняя левая -подматрица  является точным транспонированием верхней левой -подматрицы .

Координаты результата равны

,

где

.

На рис. 3-8с изображен преобразованный объект.

 



<< ПредыдущаяОглавлениеСледующая >>