ОСНОВЫ КОМПЬЮТЕРНОЙ ГРАФИКИ, часть 1 49
как показано на рис. 32, 33:
p
DMD =
'
,
p
AMA =
'
,
p
BMB =
'
,
p
CMC =
'
, а
также, например,
[][]
1,0,1,11,',','
minminmin
⎯⎯→⎯
p
M
zzz .
Итак, нормирующие преобразования видимого объема могут
производиться за два шага.
1 шаг - преобразование к нормированному видимому объему и
отсечение по 3-х мерному алгоритму Коэна-Сазерленда.
2 шаг - преобразование к прямоугольному параллелепипеду с помощью
матрицы
p
M и удаление скрытых поверхностей при условии равенства
координат
и y .
Алгоритмы удаления невидимых ребер и граней
Алгоритмы удаления невидимых граней могут быть условно поделены
на два класса в зависимости от принципов, заложенных для их реализации.
Первый класс – это алгоритмы работающие в пространстве объекта. Это
означает, что для определения видимости данной грани сравнивается ее
взаимное расположение со всеми остальными гранями в трехмерной сцене.
Пусть
N – количество граней в трехмерной сцене. Для построения
трехмерной сцены в этом случае необходимо сравнить положение каждой
грани с оставшимися, что требует порядка
2
операций. Например, пусть
количество граней в трехмерной сцене 1000
, тогда время работы
алгоритмов этого класса порядка 1,000,000 операций.
Другой класс алгоритмов - работающих в пространстве изображения,
основан на нахождении точки ближайшей грани которую пересекает луч
зрения, проходящий через заданную точку на растре. Поскольку число точек
на растровом экране фиксировано, то алгоритмы этого класса менее
чувствительны к увеличению количества объектов в трехмерной
сцене. Пусть
n - число точек на растровом экране. Тогда количество операций,
необходимых для построения трехмерной сцены будет порядка
n
.
Например, для экранного разрешения 320
200 точек, =n 64000, тогда
количество операций для
1000 граней будет порядка 64,000,000. Выбор
класса алгоритма может зависеть от особенностей конкретной задачи, а также
от способов реализации алгоритма.
Рассмотрим алгоритм удаления невидимых граней с использованием
z-буфера, который является одним из наиболее часто используемых в
современных приложениях компьютерной графики. Он работает в