Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KGMicro.DOC
Скачиваний:
66
Добавлен:
27.05.2013
Размер:
907.78 Кб
Скачать

15.1. Введение

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

Необходимость этих разработок следует из анализа двух основ­ных подходов к решению проблемы. В первом подходе объект рас­сматривается как совокупность п-угольных граней и необходимо определить, какая грань видна в каждой точке разрешения экрана дисплея. Чтобы выяснить при этом, какая из граней является бли­жайшей к наблюдателю, необходимо проверить все п граней для каждой разрешаемой точки. Для N таких точек число проверок пропорционально nN, где N обычно лежит в диапазоне 250 000— 4 000 000.

Во втором подходе каждая из п граней сравнивается с остав­шимися п—1 гранями. Число проверок в этом случае пропорцио­нально п2. Поэтому можно предположить, что второй подход лучше даже для наибольших из реально встречающихся значений п (100000—200000). Однако каждый из индивидуальных шагов при втором подходе требует больше времени, поэтому этот процесс ока­жется медленнее даже при меньших п.

Сазерленд, Спрулл и Шумахер [454] назвали эти подходы алго­ритмами, работающими соответственно в пространстве изображе­ния и в пространстве объекта. Они рассмотрели и классифициро­вали десять алгоритмов, разработанных до 1972 г. Ниже описаны четыре из них, а также некоторые другие алгоритмы, созданные после 1972 г.

Алгоритмы удаления скрытых поверхностей необходимо стро­ить так, чтобы каждый их шаг был как можно более эффективным. В двух следующих разделах приведены некоторые общие рекомен­дации. Затем изложены специализированные алгоритмы, которые позволяют стирать скрытые поверхности на изображениях трехмер­ных объектов, составленных из полигональных граней. Некоторые из этих алгоритмов можно использовать для удаления скрытых ребер. Кратко описаны алгоритмы, которые предназначены для изображения объектов, заданных кусками криволинейной поверх­ности. Класс специализированных алгоритмов, предназначенных : для отображения однозначных функций двух переменных [68, 514], здесь не рассматривается.

15.2. Упрощение сравнений по глубине: перспективное преобразование

Удаление скрытых поверхностей должно проводиться в трехмер­ном пространстве до проецирования на плоскость, при котором теряется информация о третьей координате, необходимая для про-

Цведения сравнений по глубине.

SpQcHOBHoe сравнение по глубине |можно свести к следующему во-

рпросу: закрывает ли одна из двух ^заданных точек pi=(*i, (/i, 2i) и

?Ра= 2, г/2, г2) другую? Этот вопрос

^эквивалентен следующему: лежат Г Ли точки Рг и Р2 на одном и том -же проекторе (рис. 15.1)? Если да,

fto, сравнивая 2j и г2, можно опреде-

Щлить, какая точка ближе к наблю-

ЙДателю. Если же нет, то ни одна

Щнз точек не закрывает другую.

Сравнения по глубине обычно производятся после применения

Л нормирующего преобразования (гл. 8), поэтому при параллельном

"проецировании проекторы параллельны оси z, a при центральном проецировании выходят из начала координат. Следовательно, при параллельном проецировании точки лежат на одном проекторе, если xi=kz и </i=J/2, а при центральном проецировании для опре­деления принадлежности точек проектору приходится выполнять четыре операции деления, чтобы выяснить, имеют ли место равен­ства xl/zl=x2/2z и г/1/21=г/2/22. Более того, если точка Р^ затем сравнивается с некоторой точкой Р3, две из этих операций придется повторить.

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

На рис. 15.2 показано, как искажается куб после преобразования, которое состоит в том, что сохраняются относительная глубина, прямые линии и плоскости и в то же время производится перспективное укорачивание. Как было показано в гл. 8, деление, с помощью которого выполняется укорачивание, производится не при всяком сравнении двух точек, а лишь один раз для каждой точки. Матрица

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

соотношениями:

Отсечение, однако, не может проводиться относительно прямо­угольного параллелепипеда, описываемого уравнениями (15.2), так как деление на г, выполняемое в матрице М для формирования параллелепипеда, приводит к потере информации, необходимой для определения знака г-координаты точки (гл. 8). Отсечение относи­тельно нормированного видимого объема, представляющего собой усеченную пирамиду, можно выполнять до применения матрицы М, однако после этого результаты отсечения надо умножить на матрицу М. Более привлекательным решением является объединение матрицы М с перспективным нормирующим преобразованием Мцевтр (гл. 8) так, чтобы можно было обойтись лишь одним умножением на матрицу. Отсечение проводилось бы затем в однородных координатах до выполнения деления. Если результаты этого умножения обозначить через

(X, Y, Z, W), отсекающие пределы можно записать так:

Их можно получить из неравенств (15.2) заменой х, у и г на X/W, Y/W и Z/W соответственно, чтобы отразить тот факт, что х, у и г из неравенств (15.2) являются результатами деления на W. После проведения отсечения мы результат делим на W и получаем р, ур, Zp). (В работе [43] рассматривается процесс отсечения для случая, когда знаки W крайних точек отрезка различны.)

Теперь мы можем приступить к удалению скрытых поверхностей, забыв о тех осложнениях, которые продемонстрированы на рис. 15.1. Разумеется, если задано параллельное проецирование, перспектив­ное преобразование матрицы М не требуется, поскольку в этом случае при нормирующем преобразовании Nmf для параллельных проекций проекторы оказываются параллельными оси г„.