Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

617_Zabelin_L.JU._Osnovy_komp'juternoj_grafiki_

.pdf
Скачиваний:
41
Добавлен:
12.11.2022
Размер:
8.13 Mб
Скачать

n-мерной системе координат. Тогда преобразование объекта можно определить как изменение положения точек объекта. Новое положение точки пространства отвечает новым значениям координат 1, т2 .... тn).

Соотношение между старыми и новыми координатами для всех точек объекта:

1, т2 .... тn) = F(k1, k2, ..., kn) и будет определять преобразование объекта, где F – функция преобразования.

Например, преобразование объектов на плоскости можно определить так:

X Fx (x, y),

(9.2.3.)

Y F y(x, y)

 

В трехмерном пространстве:

 

X Fx (x, y, z),

 

Y F y(x, y, z),

(9.2.4.)

Z Fz (x, y, z)

 

Преобразования классифицируют:

по системам координат (например, преобразование из полярной системы

впрямоугольную);

по виду функций преобразования fi.

По виду функций преобразования различают линейные и нелинейные пре-

образования.

Если при всех i = 1, 2, .... N, функции fi – линейные относительно аргументов (k1, k2, ..., kn), то есть fi ai1k1 ai 2k2 ...ain kn ain 1 , где aij константы, то такие преобразования называются линейными, а при п = N – аффинными.

Если хотя бы для одного i функция fi – нелинейная относительно (k1, k2,

..., kn), тогда преобразование координат в целом не линейно. Например, преобразование:

X 3x 5y,

Y4xy 10 y

нелинейное, так как в выражении для Y присутствует ху.

Примеры линейных и нелинейных преобразований:

А) Линейные преобразования (прямые переходят в прямые):

Линейное преобразование применяется к каждой точке (вершине) модели;

Не изменяет топологию модели.

61

Можно описать уравнением:

X Ax By Cz D

 

Y Ex Fy Gz H

(9.2.5.)

Z Ix Jy Kz L

 

Таблица 9.2.1. – Линейные преобразования

 

 

 

Перенос

 

Параллельный перенос есть пе-

 

 

ремещение каждой точки в одном и

 

 

том же направлении на фиксирован-

 

 

ное расстояние. Преобразование па-

 

 

раллельного переноса задается сле-

 

 

дующими формулами:

 

x

 

 

X x x

 

y

 

 

Y y y

 

 

Z z z

 

 

 

 

 

Поворот (2D)

Поворот – это преобразование плоскости, при котором расстояние от центра поворота до точки сохраняется и каждая точка повернута на определенный ориентированный угол, т.е. движение с единственной неподвижной точкой.

X x cos y sin Y xsin y cos

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

Преобразование подобия есть преобразование плоскости, при котором расстояния изменяются в некоторое фиксированное число раз (k).

X ax

Y by

Z cz

62

Сдвиг (2D)

X x ay

Y y bx

Б) Нелинейные преобразования: произвольное преобразование точек модели.

Рисунок 9.2.1. – произвольное преобразование точек модели.

Алгебра матриц (повторение). Линейные преобразования наглядно записываются в матричной форме, поэтому часто используются операции над матрицами. Необходимо сделать небольшой экскурс в матричную алгебру.

Сложение и разность матриц. Пусть А и В – матрицы размеров т п.

Мы можем сопоставить им третью матрицу С размеров т п, элементы

которой

сij,

связаны с

элементами аij и bij матриц А и В равенствами:

cij aij

bij

(i = 1, .... т,

j= 1, ..., n).

Сумма матриц В и -А называется разностью матриц В и А и обозначается

(В – А).

Умножение матриц:

· на число: Матрица С – элементы которой равны произведениям элементов аij матрицы А на число α – называется произведением A

на α и обозначается αA. Мы имеем cij aij (i = 1, ..., т, j= 1.....n). · двух матриц: Для двух матриц А размером (т n) и В размером

(n р):

(9.2.6.)

63

произведением матриц является матрица С = А В размером (т р)

(9.2.7.)

n

для которой элементы Сij вычисляются по формуле: cij aik bkj .

k 1

Правило вычисления элементов матрицы С можно легко запомнить по названию "строка на столбец". И действительно, для вычисления любого элемента Сij необходимо умножить элементы i-й строки матрицы А на элементы j- го столбца матрицы В.

(9.2.8.)

Произведение матриц определено только для случая, когда количество столбцов матрицы А равно количеству строк матрицы В.

Обратная матрица. Матрица X называется обратной для. матрицы А,

если ХА = АХ = Е, где Е – единичная матрица. Две матрицы могут быть перестановочны только в том случае, если они обе – квадратные матрицы одного и того же порядка. Поэтому иметь обратную форму может только квадратная матрица.

Преобразования в матричной форме. Итак, преобразование можно опи-

сать следующими уравнениями:

X Ax By Cz D

 

Y Ex Fy Gz H

(9.2.9)

Z Ix Jy Kz L

где А, В, ..., L – константы;

х, у, z – координаты до преобразования;

X ,Y , Z – новые координаты точек объектов. В матричном виде

64

X

A

 

 

 

 

E

Y

 

 

 

 

I

Z

 

0

 

 

 

B

C

D

x

 

 

 

 

 

 

 

 

F

G

H

y

 

J

K

L

 

z

(9.2.10.)

 

 

 

 

 

 

 

0

0 1

 

 

 

 

 

 

 

1

 

 

Нижняя строка – результат того, что мы переходим к однородным координатам, чтобы учесть коэффициенты D, H и L (без этого невозможно совершить, например, операцию переноса).

9.3. Аффинные преобразования объектов на плоскости (2D) Аффинные преобразования объектов на плоскости описываются так:

X Ax By C

(9.3.1.)

Y Dx Ey F

 

где А, В, ..., F – константы;

х, у – координаты до преобразования;

X, Y – новые координаты точек объектов.

Рассмотрим частные случаи аффинного преобразования:

А) Сдвиг (параллельный перенос)

X x dx,

 

 

в матричной форме выглядит:

Y y dx

 

1

0

dx

 

 

 

 

 

 

(9.3.2.)

 

0

1

dy

 

0

0

1

 

 

 

 

 

Рисунок 9.3.1. – Сдвиг

Обратное преобразование позволяет рассчитать старые координаты точек объектов по известным новым координатам:

65

x X dx,

1

0

dx

 

 

 

 

 

 

(9.3.3.)

 

 

0

1

dy

y Y dx

 

0

0

1

 

 

 

 

 

 

Б) Растяжение-сжатие (масштабирование)

Необходимо отметить, что это, вероятно не очень удачное название, так как для некоторых типов объектов размеры и форма не изменяются, например, для точечных объектов. По-другому это преобразование можно назвать масштабированием.

Рисунок 9.3.2 – Растяжение-сжатие

X kx x,

 

kx

0

0

 

в матричной форме выглядит:

 

 

k y

 

 

(9.3.4.)

 

 

0

0

 

Y k y y,

 

 

 

 

 

 

 

 

 

0

0

1

 

 

 

 

 

 

Обратное преобразование:

x X / kx

в матричной форме выглядит:

 

y Y / k y

 

1/ kx

0

0

 

 

0

1/ k y

0

 

(9.3.5.)

 

 

 

0

0

1

 

 

 

 

 

В) Поворот вокруг центра координат (0, 0)

Рисунок 9.3.3. – Поворот вокруг центра координат

X x cos y sin ,Y x sin y cos ,

cos

sin

0

 

 

 

 

 

 

(9.3.6.)

в матричной форме выглядит: sin

cos

0

 

 

0

0

1

 

 

 

 

 

66

 

 

 

 

 

Формулы для обратного преобразования можно получить, если представить себе поворот точки с координатами (X, Y) на угол (-α ):

x X cos Y sin ,

в матричной форме выглядит:

 

y X sin Y cos ,

 

cos

sin

0

 

 

 

 

 

 

(9.3.7.)

sin

cos

0

 

 

 

0

0

1

 

 

 

 

 

Аффинные преобразования в пространстве. Рассмотрим частные случаи трехмерного аффинного преобразования объектов.

А) Сдвиг на dx, dy, dz

X x dx,

1 0 1

dx

 

 

 

 

 

 

0

1

0

dy

(9.3.8.)

Y y dx в матричной форме выглядит:

Z z dz

0 0 1

dz

 

 

 

0

0

1

 

 

0

 

Б) Растяжение-сжатие на kx, ky, kz

 

 

 

 

 

X k

x

x,

 

k

x

0

0

0

 

 

 

 

 

 

 

 

 

 

 

Y k y y,

в матричной форме выглядит:

 

0

k y

0

0

 

(9.3.9.)

 

 

 

 

0

0

kz

0

 

Z kz z

 

 

 

 

 

 

 

 

 

 

 

0

0

0

1

 

 

 

 

 

 

 

 

 

В) Повороты:

· Поворот вокруг оси х на угол

Рисунок 9.3.4. – Поворот вокруг оси х на угол

X x,

 

 

 

Y y cos z sin ,

-->

 

 

Z y sin z cos

 

 

67

1

0

0

0

 

 

0

cos

sin

0

 

 

 

 

(9.3.10)

 

0

sin

cos

0

 

 

 

 

 

 

 

 

 

 

0

0

0

1

 

 

 

 

 

· Поворот вокруг оси у на угол

Рисунок 9.3.5. – Поворот вокруг оси у на угол

X x cos z sin ,

 

cos

0

sin

0

 

 

 

 

0

1

0

0

 

 

Y y,

-->

 

 

(9.3.11)

 

 

 

 

 

 

Z x sin z cos

 

 

 

 

 

 

 

sin

0

cos

0

 

 

 

 

 

0

0

0

1

 

 

 

 

 

 

 

· Поворот вокруг оси z на угол

Рисунок 9.3.6. – Поворот вокруг оси z на угол

X x cos z sin ,

 

cos

sin

0

0

 

 

 

 

 

cos

0

0

 

 

Y x sin z cos ,

-->

sin

 

(9.3.12)

 

 

 

 

 

 

Z z

 

0

0

1

0

 

 

 

 

 

 

 

 

0

0

0

1

 

 

 

 

 

 

 

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

68

10.Проективные преобразования (проекции)

10.1.Общие сведения

Внастоящее время наиболее распространены устройства отображения, которые синтезируют изображения на плоскости – экране дисплея или бумаге. При использовании любых графических устройств обычно используют проекции. Проекция задает способ отображения объектов на графическом устройстве. Для выполнения таких преобразований применяются проективные преобразования, которые описываются матрицей 4x4 (линейным преобразова-

нием) [18].

Рисунок 10.1.1. – Матрица проективного преобразования

10.2. Мировые и экранные координаты

При отображении пространственных объектов на экране или на листе бумаги с помощью принтера необходимо знать координаты объектов. Мы рассмотрим две системы координат [18].

Первая – мировые координаты, которые описывают истинное положение объектов в пространстве с заданной точностью.

Вторая – система координат устройства изображения, в котором осуществляется вывод изображения объектов в заданной проекции.

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

69

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

10.3. Виды проекций

Итак, сложность при выводе изображений объемных тел заключается в том, что трехмерные объекты должны быть отображены на плоскость. Такое отображение выполняется с помощью проектирования. Плоскость, на которую осуществляется проектирование, называется проекционной или картинной плоскостью [19].

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

Рисунок 10.3.1. – Виды проекций

70