Читать в оригинале

<< Предыдущая Оглавление Следующая >>


4.2.3. ИЗОБРАЖЕНИЕ МНОГОУГОЛЬНИКОВ НА ЭКРАНЕ

Пусть экранная и объектная системы координат связаны между собой параметрами сдвига  и поворота,  (рис.3.1.4), где  - координаты центра экранной системы в объектной системе координат;  - азимут оси ;  - наклон оси .

Тогда одной операцией легко осуществляется перевод объектных координат вершин многоугольников в экранные:

,

где  - матрица преобразования координат,  (см.(4.1.3));  - число вершин многоугольников, для случая треугольников ;  - номер текущей вершины; .

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

; ,                       (4.2.2)

где  - расстояние от центра проекции до экрана.

Если центр проекции находится за экраном, то

; .                  (4.2.3)

Заметим попутно, что операции (4.2.2), (4.2.3) полностью адаптированы к исполнению матричным процессором, так как умножение матриц - обычная стандартная функция матричного процессора, а операция (4.2.3) выполняется путем выделения из  первого и второго столбцов и поэлементного деления их на третий столбец.

Следовательно, в системе координат экрана можно сформировать матрицу  точек-изображений вершин треугольников:

.

Первые три точки описывают -й треугольник поля, вторые три - второй и т.д. Треугольник под номером  имеет вершины, координаты которых записаны в строках матрицы  под номерами ; ; . Прямые линии, соединяющие вершины первого треугольника, могут быть описаны следующим образом: ; ; . Уравнения прямых, описывающих ребра -го треугольника, образуются из приведенных выражений путем замены индексов 1, 2, 3 на , ,  соответственно.

Таким образом, на приемном экране могут быть построены  линий-ребер и соответственно  треугольников. Рассматриваемая -я сканирующая строка пересечет не все, а только часть ребер, которые называются активными в пределах данной строки. Для -й строки, описываемой уравнением , активным будет любое ребро, опирающееся на вершины , , для которого . После селекции активных ребер определяют координаты  пересечения их со сканирующей стороной. Например, если ребро первого треугольника активно, то координата  пересечения определяется решением системы двух уравнений:  и . После решения соответствующих систем для всех активных ребер сканирующая строка оказывается поделенной на множество интервалов, образованных ближайшими друг к другу абсциссами . В пределах одного и того же интервала на видимость претендуют несколько отрезков, каждый из которых образован сечением сканирующей плоскости с треугольниками. Сканирующей плоскостью называют плоскость, проходящую через текущую сканирующую строку и центр проекции.

Для определения видимости отрезков и соответствующих им треугольников необходимо вычислить глубину до каждого отрезка (треугольника) в середине интервала [142]. Отрезок, ближайший к наблюдателю (центру проекции), является видимым, и в данном интервале вся сканирующая строка заполняется освещенностью треугольника, которому этот отрезок принадлежит.

Если многоугольники могут протыкать друг друга, то приведенное правило определения видимости и освещенности сохранится, но список ребер должен быть расширен за счет порождения отрезков-пересечений различных многоугольников попарно между собой. Очевидно, что предварительно необходимо алгоритмически найти все возможные пересечения и занести в память информацию о многоугольниках, которым эти отрезки-пересечения принадлежат. Число анализируемых пар многоугольников равно числу сочетаний из общего числа  многоугольников по два: . Например, при  приходится предварительно анализировать пересечения 4950 многоугольников, а при  - уже 19900.

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

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

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

 



<< Предыдущая Оглавление Следующая >>