logo search
KGMicro

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 для параллельных проекций проекторы оказываются параллельными оси г„.