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

Алгоритмы компьютерной графики. Часть 3. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
816 Кб
Скачать

ymax

направление

света

поверхность

объекта

ymin

Рис. 2.14. Модель Варна. Заслонки

направление γ света

β

Р

Рис. 2.15. Модель Варна. Конусы

Заслонки, ориентированные по координатным плоскостям, моделируются путем ограничения протяженности освещенного участка по осям X, Y и Z. Если точка поверхности лежит внутри ограничителей, то вычисляется интенсивность, определяемая этим источником, иначе она игнорируется. Для рис. 2.14 необходимо, чтобы

ymin yобъекта ymax.

Конус позволяет получить четко очерченное пятно света без затухания по краям. Но при этом необходимо, чтобы угол β был меньше или равен углу γ, иначе точка поверхности не освещается данным источником света.

2.6.Прозрачность

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

31

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

η1 sinθ η2 sinθ ,

где η1 и η2 – показатели преломления сред; – угол падения; – угол преломления (рис. 2.16). Ни одно вещество не пропускает весь падающий свет, часть его всегда отражается, что также проиллюстрировано на рис. 2.16.

 

 

Среда 1

Падающий

 

 

луч

 

Отраженный

 

 

θ

θ

луч

 

 

 

граница

Преломленный θ' луч

Среда 2

Рис. 2.16. Преломление света

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

Некоторые эффекты преломления показаны на рис. 2.17.

32

b

2

a

3

1

4

Рис. 2.17. Эффекты преломления света

Показатели преломления объектов 1 и 2 одинаковы, а объекты 3 и 4 непрозрачны. Если не принимать во внимание эффект преломления, то наблюдатель в точке a видит объект 3, а наблюдатель в точке b – объект 4 (пунктирная линия). На самом деле, с учетом преломления, из точки a мы видим объект 4, а из точки b – объект 3 (непрерывная линия).

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

Простое пропускание можно встроить в любой алгоритм (кроме алгоритма с z-буфером) следующим образом.

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

I tI1 1 t I2 ,

где I1 – интенсивность видимой поверхности;

I2 – интенсивность поверхности, расположенной непосредственно за ней;

33

t – коэффициент прозрачности видимой поверхности (если t = 0, то поверхность полностью прозрачна, иначе при t = 1 поверхность полностью непрозрачна). Если поверхность 2 тоже прозрачна, то алгоритм применяется рекурсивно, пока не встретится фон или непрозрачная поверхность. Вблизи контурных линий прозрачность уменьшается изза толщины материала (например, ваза). Поэтому в данном случае применяется нелинейная интерполяция:

t tmin tmax tmin 1 1 nz

p ,

где tmin и tmax – минимальные и максимальные составляющие прозрачности объекта;

nz z-составляющая нормали к поверхности; p – коэффициент степени прозрачности;

t – прозрачность пиксела или точки объекта.

Для алгоритма с z-буфером необходимы отдельные буферы прозрачности, интенсивности и весовых коэффициентов прозрачности. Также необходимо отметить прозрачные многоугольники в структуре данных. Алгоритм для z-буфера приведен в [1].

3. ГЕОМЕТРИЧЕСКИЕ ПРЕОБРАЗОВАНИЯ

Компьютерная геометрия – это математический аппарат, положенный в основу компьютерной графики. Основу компьютерной геометрии составляют различные преобразования точек и линий. При этом можно изменять масштаб изображения, вращать его, перемещать и трансформировать для улучшения наглядности изображения. Все эти преобразования можно выполнить на основе математических методов, которые будут рассмотрены далее. Преобразования разделяются на двумерные (преобразования на плоскости) и трехмерные (пространственные).

3.1. Двумерные преобразования

Геометрически каждая точка задается с помощью двух координат, т. е. вектора относительно выбранной системы координат. Координаты точек в декартовой системе координат можно рассматривать как элементы матрицы [x, y] строки или столбца. Положением этих точек управляют путем преобразования матрицы.

34

Точки на плоскости можно перенести в новые позиции путем прибавления к координатам констант переноса

xyx y m, nx m y n ,

где m и n – коэффициенты матрицы преобразования.

Рассмотрим результаты матричного умножения матрицы [x y] на матрицу преобразования общего вида и частные случаи этой матрицы

x y

a

b

ax cy bx dy

x y ,

c

d

 

 

 

при a = d = 1 и c = b = 0 умножение приводит к идентичной матрице

x y

1

0

x y

;

0

1

 

 

 

d = 1, b = c = 0 и a = const – изменение масштаба в направлении X

x y

a

0

ax y

;

0

1

 

 

 

b = c = 0, a = const и d = const – изменение масштаба в направлениях x и y

x y

a

0

ax dy

,

0

d

 

 

 

если a d, то перемещения вдоль осей неодинаковы, если (a и d) > 1, то увеличение масштаба по обеим осям, если 0 < (a и d) < 1 – уменьшение, а если коэффициенты a или (и) d отрицательны, то происходит отображение координат точек

10

xy x y

0 1

отображение относительно оси Y. Отображение и изменение масштаба вызывают только диагональные элементы матрицы преобразования;

при a = d = 1, c = 0, b = const – сдвиг

1b

xy x bx y ,

01

35

координата x точки не изменяется, а координата y линейно зависит от коэффициента b.

Причем преобразование общего вида, примененное к началу координат (точка [0,0]), не приведет к изменению координат этой точки. То есть начало координат инвариантно при данном преобразовании. Это ограничение преодолевается при использовании однородных координат.

Если подвергнуть общему преобразованию координат различные фигуры, то можно установить, что параллельные прямые преобразуются в параллельные прямые, середина отрезка преобразуется в середину отрезка, параллелограмм преобразуется в параллелограмм и т. д.

Для примера рассмотрим преобразование единичного квадрата

(рис. 3.1).

Y

1

 

 

 

 

D

C

 

 

 

 

 

 

A

B

 

X

 

 

 

 

0

 

 

 

 

 

1

 

 

Рис. 3.1. Единичный квадрат

 

Четыре вектора положения точек единичного квадрата можно записать в виде матрицы

A 0 0

B1 0

C1 1 D 0 1

36

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

 

 

 

 

0

0

 

 

0

0

A

 

1

0

a

b

a

b

B

.

1

1

c

d

a c

b d

C

 

0

1

 

 

c

d

D

 

Результат можно посмотреть на рис. 3.2.

Вывод: новые координаты точки B определяются первой строкой матрицы преобразования, а новые координаты точки D– второй строкой, и если координаты точек Bи Dизвестны, то можно определить матрицу преобразования.

Y

 

C

 

D

A

B

X

0

1

Рис. 3.2. Результат общего преобразования

Можно воспользоваться этим для определения матрицы, которая определяет вращение фигуры относительно начала координат на произвольный угол (рис 3.3).

Координаты Bравны:

x cos , y sin .

Координаты точки D вычисляются аналогично, и матрица преобразования выглядит следующим образом:

cos θ

sin θ .

sin θ

cosθ

37

 

Y

C

C

D D B

X

(A)A B

Рис. 3.3. Вращение единичного квадрата на произвольный угол

Для частных случаев, например поворот на 90 , матрица преобразования выглядит так:

0

1 .

1

0

Тогда как двумерное вращение в плоскости XY осуществляется вокруг оси, перпендикулярной этой плоскости, отображение выполняется поворотом на 180вокруг оси, лежащей в плоскости XY. Отображение вокруг оси Y = X:

0

1

,

1

0

 

вокруг оси Y = 0:

 

 

1

0

,

0

1

 

вокруг оси X = 0:

 

 

1

0 .

0

1

 

38

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

Преобразования переноса масштабирования и поворота записываются в матричной форме в виде:

P P T ,

P P S,

P P R.

То есть перенос в отличие от масштабирования и поворота реализуется с помощью сложения, так как вводить константы переноса внутрь общей матрицы 2 × 2 не представляется возможным. Но желательно иметь единую форму. Кроме того, начало координат, как уже говорилось выше, инвариантно к общим преобразованиям. Эту проблему можно решить за счет третьей компоненты в векторе точки

[x y 1].

Матрица преобразования для смещения будет иметь следующий вид (3 × 2):

1 0

0 1 , m n

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

1 0

x y 1 0 1

x m y n ,

m n

где m и n – константы перемещения.

Так как матрица 3 × 2 не является квадратной, то она не имеет обратной матрицы, что затрудняет дальнейшие вычисления. И, следовательно, дополняем ее до квадратной матрицы 3 × 3:

1 0 0

0 1 0 , m n 1

39

используя эту матрицу, получим

1 0 0

x y 1 0 1 0

x m y m 1 .

m n 1

Третья компонента положения точки не изменяется при добавлении третьего столбца к матрице преобразования, но позволяет выполнить смещение. Третий элемент можно рассматривать как дополнительную координату вектора положения, и в общем случае вектор положения точки [x y 1] при воздействии на него матрицы преобразования 3 × 3 становится вектором

X Y H X / H Y / H 1

и преобразование в трехмерном пространстве в данном случае ограничивается плоскостью.

Итак, представление двумерного вектора трехмерным (или n- мерного вектора n + 1-мерным) называется однородным координатным воспроизведением. При однородном координатном воспроизведении n-мерного вектора все действия выполняются в n+1-мерном пространстве, а конечные результаты в n-мерном пространстве вычисляются с помощью обратного преобразования.

Не существует единственного однородного координатного представления точки в двумерном пространстве. Так, матрицы

[12 8 4], [6 4 2] и [3 2 1]

представляют одну и ту же точку [3 2].

Преимущество введения однородных координат проявляется при использовании матрицы общего вида (3 × 3)

a b p

c d q , m n s

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

40

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]