Домой
назад Оглавление вперед




[стр.-0]

Реализация методов манипуляции объектами в интерактивных системах визуализации

А. С. Тотмаков А. С. (totmakov@mail.ru) OOO «Luxoft»

Рассматриваются методы манипуляции объектами в трехмерном пространстве, используемые при построении интерактивных систем визуализации реального времени

Под манипуляцией, подразумевается выполнение действий или приемов, направленных на изменение позиции, ориентации, формы, анимация объектов, источников освещения и виртуальных камер. Манипуляция объектом осуществляется посредством применения к нему одной или нескольких базовых трансформаций. Под базовыми трансформациями подразумеваются перемещение, вращение, масштабирование, сдвиг, соединение трансформаций, трансформации твердого тела и нормалей и обратная трансформация. представляющих собой перемещение, вращение, масштабирование, сдвиг.

Трансформация является базовым инструментом для манипулирования геометрией. К большинству графических программных интерфейсов (graphic API) относятся функции для обработки матриц, с помощью которых реализуются множество трансформаций.

Матрицы, выполняющие перемещение, вращение, масштабирование, отражение и сдвиг, являются аффинными, т. е. такими, при которых параллельные линии после преобразования остаются параллельными.

Однородные координаты

Точка представляет собой некоторую позицию в пространстве, тогда как вектор -это направление, не имеющее позиции. Используя матрицы размерностью 3х3 (для трехмерного пространства), возможно выполнять такие линейные трансформации, как вращение, масштабирование и сдвиг координат. Однако при этом невозможно выполнить перемещение. Это не относится к векторам, так как перемещение для них не имеет смысла, но для точек имеет важное значение.

Для преобразования как точек, так и векторов вводятся однородные координаты (homogeneous coordinates), в которых матрицы 3х3 дополняются до размера 4х4, а трехмерные точки и векторы обзаводятся еще одним элементом. Таким образом, однородный вектор p будет представлен как p=(pxpypzpw) [1]. Для векторов pw=0, а для точек pw =1. При проецировании могут использоваться различные значения pw. В случае, если pw не равняется нулю или единице, для получения однородных координат необходимо произвести деление всех компонентов на pw. Тогда однородные координаты будут иметь вид (pxpw, pypw, pzpw, 1).

Матрица M3x3 дополняется до однородной матрицы размерностью 4х4 следующим образом:


M4 x 4 =

m,

00

m,

01

m,,

m

20

m

m

0 0

m02 m12 m22 0

0

0 0 1

Вместо матрицы М могут быть матрицы вращения, масштабирования или сдвига, которые будут преобразовывать как точки, так и векторы [2]. Для перемещения используются дополнительные элементы расширенной матрицы. Типичная матрица перемещающая точку на вектор t, будет иметь вид

T

(1

0 0

0

0 1 0 0

0 0 1 0

1

В

Легко проверить, что вектор v=(vx,vy,vz,0) не изменяется после преобразования Tv. то же время точка p=(px,py,pz,1) после преобразования Tp будет иметь вид (px+t,py+t,pz+t,1), т.е. будет перемещена на вектор t. Далее будет рассмотрено несколько однородных преобразований.

Перемещение

Матрица перемещения Т позволяет изменить позицию объекта, который перемещается на вектор t = (tx, ty, tz) (рис. 1).

T(t) = T(tx, ty, tz)

(1

0

0

0

1

0

0

0

1

v 0

0

0

1J

Рис. 1. Преобразование матрицы перемещения T(5,2,0)

t

x

t

y

t

z

Вращение

Несколько более сложный набор трансформаций представляется матрицами вращения Rx(<f>), Ry(#>), Rz(<p), которые используются для вращения объекта на ф радиан относительно оси x, y, z в следующем порядке [3]:


f 1 0

0

01

0 cos<<

- sin<

0

0 sin <p

cos<

0

v0 0

0

1,

r cos<<

0

-sin<

01

0

1

0

0

sin<3

0

cos<

0

v 0

0

0

1,

r cos<<

- sin <p 0

01

sin<3

cos<3 0

0

0

01

0

v0

00

1,

Все матрицы вращения ортогональны, т.е. R = R . Это свойство также сохраняется для комбинации любого числа таких матриц. Обратную матрицу, Ri~1(() = Ri(-() возможно найти вращением в обратную сторону вокруг той же оси. Определитель матрицы вращения всегда равен единице.

Предположим, что нам необходимо повернуть объект на ф радиан вокруг оси z, с центром вращения в точке p (рис. 2).

Рис. 2. Вращение объекта вокруг заданной точки

Поскольку вращение вокруг точки характеризуется тем, что сама точка не преобразуется вращением, трансформация начинается с перемещения объекта так, чтобы точка p совпала с началом координат. Это перемещение описывается как T(-p). Далее следует собственно вращение Rz((p). Затем объект перемещается обратно: T(p). Тогда преобразование Х будет иметь вид X = T(p) Rz(q>) T(-p) [4].

Масштабирование

Матрица масштабирования S(s) = S(sx, sy, sz) используется для масштабирования объекта с коэффициентами sx, sy, sz вдоль осей x, y, z соответственно. Это означает, что масштабирование может применяться для уменьшения или увеличения объекта.

ff 0

0

0

01

sy

0

0

ff 0

0

0

ffv0

0

0

1,

Операция масштабирования будет однородная, если sx=sy=sz, и неоднородная в противном случае. Обратная матрица S-1(s) = S(1/sx, 1/sy, 1/sz).



[стр.Начало] [стр.1] [стр.2]
Сервисный центр: ремонт iphone круто - bestiphone.ru Урал-Криогаз. ацетилен а-24 www.kriogen.ru