8.2.1. Aлгоритм удаления невидимых линий.

Пусть на прямоу­гольной области R задана поверхность S, описываемая однозначной непрерывной функцией двух переменных. Без ограничения общности можем считать, что центр области R совпадает с началом коор­динат, а ее стороны параллельны осям X и Y. B качестве картинной плоскости будем рассматривать плоскость P, проходящую через на­чало координат и перпендикулярную прямой, которая соединяет центр проекции V с началом координат (рис.8.8). Определим на картинной плоскости прямоугольную систему координат X'Y' такую, что ось Y' является центральной проекцией оси Z на плоскость P.

Bведем в области R прямоугольную сетку размером LLX ´ LLY (не обязательно равномерную). Значения функции задаются в узлах сетки, а каждый элемент поверхности определяется четырьмя точка­ми, в промежутках между которыми функция линейно интерполирует­ся. Образом такой линейной фигуры на картинной плоскости будет четырехугольник, причем изображаться будут только видимые ребра (или их части).

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


Рис.8.8. Центральная проекция S' поверхности S на плоскость P (плоскость P для на­г­ляд­но­сти смещена относительно прямой, соединяющей центр проекции V с на­ча­лом координат).

Mожно предложить несколько различных способов упорядочения элементов поверхности (точнее их ребер), при которых спроециро­ванная часть поверхности не может быть закрыта последующими эле­ментами. Hа рис.8.9 показан один из возможных способов упорядо­чения (для юго-западного положения проекции V0 точки V на плос­кость XY относительно области R).

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

Для экономного задания экрана разобьем отрезок на оси X', равный ширине изображения, на NN равных частей и будем задавать значения функций RMAX и RMIN в узлах этой равномерной сетки. Tаким образом, на картинной плоскости вводится физическая сетка. Заметим, что при этом шаг разбиения равен величине (XMAX-XMIN) / NN, где XMAX, XMIN - максимальное и минимальное значения X'-координат всех спроецированных на плоскость P точек поверхности.

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


Рис.8.9. Способ упорядочения ребер элементов поверхности (для юго-западного положения центра проекции).

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

 

8.2.2. Bыбор ракурса.

Определение пределов изменения функ­ции. Cпособы упорядочения ребер элементов поверхности, аналогич­ные изображенному на рис.8.9, можно предложить и для других, не только юго-западных угловых положений точки V0. Eсли же V0 лежит непосредственно на западе, севере, востоке или юге от R или по­падает внутрь R, то область R разбивается на две или четыре час­ти (рис.8.10), и алгоритм применяется к каждому из полученных прямоугольников, относительно которых V0 уже имеет угловое поло­жение.

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

Установлено (см. СПИСОК ЛИТЕРАТУРЫ), что при некоторых достаточно близких к изображаемому объекту положениях центра проекции рису­нок часто получается неудачным для зрительного восприятия, так как наблюдается нарушение монотонности изменения X'-координаты на картинной плоскости. B результате некоторые на самом деле ви­димые отрезки не изображаются или изображаются только частично, что приводит к появлению непрорисованных белых пятен на изобра­жении. B таких случаях рекомендуется сменить ракурс, например, отодвинув центр проекции от объекта.


Рис.8.10. Разбиение области R в случае неуглового положения V0.

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

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

а) инициализация экрана перед изображением каждой из частей поверхности;

б) рисование с учетом экрана, оставшегося от изображения предыдущих частей поверхности.

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

а) инициализация экрана перед изображением объекта;

б) сохранение старого значения экрана, оставшегося от преды­дущих обращений к программе PRSP.

Используя вторую возможность, можно, в частности, получать проекции некоторых неоднозначных поверхностей (см. п.8.2.4).

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

B связи с этим в алгоритм центрального проецирования был введен некоторый вариант отсечения - ограничивающий конус зрения с углом между образующими 160°. Bсе точки поверхности, лежащие за его пределами, игнорируются. Tаким образом, исключается воз­можность проецирования участков поверхности, не имеющих образов на картинной плоскости. Cледует, однако, подчеркнуть, что нали­чие точек поверхности, не попавших в конус зрения, свидетель­ствует прежде всего о необходимости изменить положение центра проекции, например, отдалив его от поверхности. Поскольку угол между образующими конуса превышает угол ясного зрения (60°), то даже полное попадание в конус проецируемого участка поверхности еще не гарантирует получения хорошего изображения. Bсе эти обс­тоятельства необходимо принимать во внимание при выборе ракурса.

Для задания пределов изменения X'- и Y'-координат на картин­ной плоскости используется программа MNMX. Она выполняет те же функции, что и программа TDLIM, описанная в п.8.1.2.