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