Скачиваний:
13
Добавлен:
05.04.2013
Размер:
22.43 Кб
Скачать

Двумерные преобразования - 2.7. Поворот вокруг произвольной оси в пространстве A.l:link { text-decoration: none; font-size: 8pt; color: 666666; } A.l:hover { text-decoration: none; font-size: 8pt; color: 666666; } A.l:active { text-decoration: none; font-size: 8pt; color: 666666; } A.l:visited { text-decoration: none; font-size: 8pt; color: 666666; } A.std:link { text-decoration: none; font-size: 11pt; font-weight: bold; color: 8E5717; } A.std:hover { text-decoration: none; font-size: 11pt; font-weight: bold; color: 7F0000; } A.std:active { text-decoration: none; font-size: 11pt; font-weight: bold; color: 8E5717; } A.std:visited { text-decoration: none; font-size: 11pt; font-weight: bold; color: 8E5717; } A.li:link { text-decoration: none; font-size: 10pt; font-weight: bold; color: 666666; } A.li:hover { text-decoration: none; font-size: 10pt; font-weight: bold; color: 666666; } A.li:active { text-decoration: none; font-size: 10pt; font-weight: bold; color: 666666; } A.li:visited { text-decoration: none; font-size: 10pt; font-weight: bold; color: 666666; } A.lil:link { text-decoration: none; font-size: 11pt; color: 666666; } A.lil:hover { text-decoration: none; font-size: 11pt; color: 7F0000; } A.lil:active { text-decoration: none; font-size: 11pt; color: 666666; } A.lil:visited { text-decoration: none; font-size: 11pt; color: 666666; } Алгоритмические

основы Математические

основы Flash 5 CorelDraw 10 3D Studio Max3 [программа] [тесты] [лабораторные] [вопросы] [литература]

2. Пространственные преобразования и проекции

2.7. Поворот вокруг произвольной оси в пространстве Обобщенный случай поворота вокруг произвольной оси в пространстве встречается часто, например в робототехнике, мультипликации, моделировании. Следуя логике предьщущего обсуждения, поворот вокруг произвольной оси в пространстве выполняется с помощью переноса и простых поворотов вокруг координатных осей. Так как метод поворота вокруг координатной оси известен, то основная идея заключается в том, чтобы совместить произвольную ось вращения с одной из координатных осей. Предположим, что произвольная ось в пространстве проходит через точку (x0, y0, z0) с направляющим вектором (cx, cy, cz). Поворот вокруг этой оси на некоторый угол δ выполняется по следующему правилу: выполнить перенос так, чтобы точка (x0, y0, z0) находилась в начале системы координат; выполнить соответствующие повороты так, чтобы ось вращения совпала с осью z (выбор координатной оси в данном случае произволен); выполнить поворот на угол δ вокруг оси z; выполнить преобразование, обратное тому, что позволило совместить ось вращения с осью z; выполнить обратный перенос. В общем случае для того, чтобы произвольная ось, проходящая через начало координат, совпала с одной из координатных осей, необходимо сделать два последовательных поворота вокруг двух других координатных осей. Для совмещения произвольной оси вращения с осью z сначала выполним поворот вокруг оси x, а затем вокруг оси y. Чтобы определить угол поворота α вокруг оси х, используемый для перевода произвольной оси в плоскость хz, спроецируем сначала на плоскость yz направляющий единичный вектор этой оси (рис. 2.1,а). Компоненты y и z спроецированного вектора равны cy- и cz-компонентам единичного направляющего вектора оси вращения. Из рис. 1.8,а следует, что d =

cy2 + cz2       (2.1) и cosα = cz

d       sinα = cy

d       (2.2) После перевода в плоскость хz с помощью поворота вокруг оси х, z-компонента единичного вектора равна d, а x-компонента равна cx, т.е. x-компоненте направляющего вектора, как это показано на рис. 2.1,b. Длина единичного вектора равна, конечно, 1. Таким образом, угол поворота  α вокруг оси y, необходимый для совмещения произвольной оси с осью z, равен cosβ = d     sinβ = cx      (2.3) Тогда полное преобразование модсно представить в виде [М] = [Т] [Rx] [Ry] [Rδ] [Ry]-1[Rx]-1[T]-1      (2.4) где матрица переноса равна [T] =   1     0     0     0

0     1     0     0

0     0     1     0

-x0  -y0  -z0   1 Матрица преобразования поворота вокруг оси х [Rx] =   1      0       0      0

0   cosθ   sinθ  0

0  -sinθ   cosθ  0

0      0       0      1  =  1      0       0      0

0   cz/d   cy/d    0

0  -cy/d   cz/d    0

0      0       0      1 и вокруг оси y [Ry] =    cos(-β)   0  -sin(-β)  0

     0         1       0       0

 sin(-β)    0   cos(-β) 0

     0         0       0       1  =  d   0   cx   0

0   1    0   0

-cx  0   d   0

0   0    0   1 И, наконец, вращение вокруг произвольной оси задается матрицей поворота вокруг оси z [Rδ] =    cosδ   sinδ  0   0

-sinδ   cosδ  0   0

   0        0      1   0

   0        0      0   1 На практике углы α и β не вычисляются явным образом. Элементы матриц поворотов [Rx] [Ry] в (2.4) получаются из уравнений (2.1)-(2.3) за счет выполнения двух операций деления и извлечения квадратного корня. Хотя данные результаты были разработаны для произвольной оси в первом квадранте, они применимы во всех квадрантах. Если компоненты направляющего вектора произвольной оси неизвестны, то зная вторую точку (x1, y1, z1) на оси, их можно определить, нормализовав вектор, соединяющий первую и вторую точки. Более точно вектор оси из (x0, y0, z0) в (x1, y1, z1) равен [V] = [(x1 - x0) (y1 - y0) (z1 - z0)]. Нормализация дает компоненты направляющего вектора: [cx  cy  cz] = [(x1 - x0) (y1 - y0) (z1 - z0)]

[(x1 - x0)2 + (y1 - y0)2 + (z1 - z0)2]1/2 назад | содержание | вперед © ОСУ АВТФ

Соседние файлы в папке exilim