Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шп гр.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
2.81 Mб
Скачать

6. 11.1. Введение

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

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

11.2. Преобразование отрезков из векторной формы в растровую

Главной задачей алгоритма развертки отрезков является вы­числение координат пэлов, лежащих вблизи отрезков на двумерной растровой сетке. При решении этой задачи будем предполагать, что начальная и конечная точки отрезка имеют целочисленные коорди­наты (обобщение предоставляем читателю выполнить в качестве уп­ражнения). Методика, использованная в алгоритме развертки отрез­ка в гл. 3, заключалась в пошаговом увеличении х, вычислении у = =т*х+b и подсвечивании пэла в точке (x, ROUND (у)). Вычисление произведения т*х, однако, требует времени и замедляет процесс разложения в растр. Более того, для обеспечения достаточной точ­ности придется воспользоваться представлением данных с плаваю­щей точкой (или в двоичных дробях).

      1. Простейший пошаговый алгоритм

Операцию умножения можно устранить, если заметить, что при dх = 1 m = dy/dx сводится к т = dу, т. е. изменение х па 1 приводит к изменению у на т (тангенс угла наклона отрезка). Таким образом, если xi+1=xi+1 то yi+1=yi+т для всех точек (xi, yi) отрезка, т. е. последующие значения к и у определяются, исходя из преды­дущих значений (рис. 11.1). Если m>1, шаг по х будет приводить к шагу по у, большему 1. Поэтому следует х и у поменять ролями, придавая у единичное приращение, а х будет увеличиваться на dx=dy/т=1/т. Поэтому алгоритм назван пошаговым алгоритмом: на каждом шаге производятся инкрементальные вычисления, осно­ванные на предыдущем шаге. Процедура LINE, реализующая этот метод для случаев -1<m<1, приведена ниже. Процедура WRITE_PIXEL, используемая в процедуре LINE, помещает значение value в пэл буфера регенерации, координаты которого задаются двумя первыми аргументами.