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

write_pixel(int ix,int iy, int value);

Аргумент value может представлять собой либо индекс цвета в режиме индексного задания цвета, либо 32-разрядное число, представляющее цвет в формате RGB А. Адрес в буфере кадра, естественно, является дискретной величиной, но экранные координаты могут быть представлены и действительными числами. Мы вправе говорить о том, что точка имеет координаты на экране, например (63.4, 157.9), но центр ближайшего к ней пикселя находится в точке (63, 158) или (63.5, 157.5). В разных устройствах отображения пиксели могут иметь разную форму и размеры (об этом речь пойдет в разделе 7.11), но сейчас будем считать, что все они являются квадратиками, причем координатами пикселя является центр этого квадратика, а размер в точности

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

Простейший алгоритм растрового преобразования линейного отрезка известен как алгоритм ЦДЛ (DDA algorithm). Этот алгоритм "позаимствован" у специализированных вычислителей - цифровых дифференциальных анализаторов, - которые в прежние времена использовались для численного решения систем дифференциальных уравнений. Поскольку прямая описывается дифференциальным уравнением вида dyidx = т, где т - коэффициент наклона, формирование прямолинейного отрезка есть не что иное, как решение этого простейшего уравнения численным методом.


⇐ Предыдущая| |Следующая ⇒