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