
- •4. 3. Архитектура видеоадаптеров ega и vga
- •Монитор
- •Видеопамять
- •Текстовый режим
- •Знакогенератор
- •Атрибуты символов
- •Атрибуты символов (монохромный режим)
- •Видеопамять в графических режимах
- •Режимы 4 и 5
- •Режим 6
- •Режимы 0Dh и 0Eh
- •Режим 0Fh
- •Режим 10h
- •Режим 11h
- •Режим 12h
- •Режим 13h
- •5. 7. Видеоадаптеры svga
- •Видеопамять svga
- •Слоеный пирог
- •Увидеть весь мир через замочную скважину
- •Больше цветов больше бит
- •Стандарт vesa
- •6. 11.1. Введение
- •11.2. Преобразование отрезков из векторной формы в растровую
- •Простейший пошаговый алгоритм
- •Алгоритм Брезенхэма для отрезков прямых
- •11.3. Растровая развертка литер
- •Пропорциональное размещение литер. Нижние выносные элементы
- •17,18 Введение в модели закрашивания
- •Геометрические составляющие для нахождения отраженного света.
- •Вычисление диффузионной составляющей
- •Зеркальное отражение
- •Фоновые источники и фоновые отражения
- •Комбинирование компонентов освещения
- •Добавление цвета
- •[Править] Описание алгоритма
- •0.6.1 Двумерный алгоритм Коэна-Сазерленда
- •[Править] Достоинства
- •[Править] Недостатки
- •О трассировке лучей
- •Матрицы и вектора
- •Обратная трассировка лучей Определение цвета точки. Текстурные карты и свойства материалов
- •16 15. Цвет в компьютерной графике
- •Перспективная проекция
- •10 Лекции по компьютерной графике
- •3.1. Координаты и преобразования
- •3.3. Преобразование в однородную систему координат
- •Поворот вокруг фиксированной точки
- •[Править] Отличия от ega
- •[Править] Текстовые режимы
- •[Править] Графические режимы
- •[Править] Стандартные графические режимы
- •[Править] Нестандартные графические режимы (X-режимы)
6. 11.1. Введение
Данная глава посвящена новой, быстро развивающейся области растровой графики. Прогресс растровой графики основан на достижениях в микроэлектронике: в настоящее время процессоры и память большого объема с произвольной выборкой создаются на небольших кремниевых кристаллах (чипах). В системе генерации изображения, которая выполняет преобразование примитивов вывода (таких, как отрезки, литеры, многоугольники и т. д.) из векторной формы в растровую, используются процессор и небольшое число чипов памяти. Существенно больше чипов памяти требуется для буфера регенерации, с помощью которого изображение построчно выводится на экран графического устройства. В гл. 1 приведены некоторые основные сведения о развитии растровой графики, в гл. 3 описана общая структура типичного растрового дисплея. В первой части данной главы представлено несколько алгоритмов развертки векторного изображения в растровое, а во второй части рассмотрены средства, которые целесообразно включить в пакет графических подпрограмм для растровой графики. В гл. 12 детально рассмотрено аппаратное обеспечение растровой графики.
Алгоритмы развертки, применяемые при построении растрового изображения, вызываются очень часто (как правило, сотни или даже тысячи раз) при каждом создании или модификации изображения. Поэтому алгоритмы должны не только порождать визуально приемлемые образы, но также делать это как можно быстрее. В самом деле, •скорость или качество изображения — основной компромисс при выборе алгоритмов развертки: одни алгоритмы быстры, но генерируют неровные (с зазубринами) ребра, другие более медленны, но порождают более гладкие ребра. Независимо от способа выбора компромиссного решения предпочтение отдается быстродействию. Поэтому в алгоритмах используются пошаговые методы, в результате чего минимизируется число вычислений (особенно умножений и делений), производимых во время каждой итерации. Дополнительного увеличения скорости можно добиться за счет применения параллельных процессоров, одновременно выполняющих преобразование примитивов вывода из векторной формы в растровую для многовходового буфера регенерации.
11.2. Преобразование отрезков из векторной формы в растровую
Главной задачей алгоритма развертки отрезков является вычисление координат пэлов, лежащих вблизи отрезков на двумерной растровой сетке. При решении этой задачи будем предполагать, что начальная и конечная точки отрезка имеют целочисленные координаты (обобщение предоставляем читателю выполнить в качестве упражнения). Методика, использованная в алгоритме развертки отрезка в гл. 3, заключалась в пошаговом увеличении х, вычислении у = =т*х+b и подсвечивании пэла в точке (x, ROUND (у)). Вычисление произведения т*х, однако, требует времени и замедляет процесс разложения в растр. Более того, для обеспечения достаточной точности придется воспользоваться представлением данных с плавающей точкой (или в двоичных дробях).
Простейший пошаговый алгоритм
Операцию умножения можно устранить, если заметить, что при 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 в пэл буфера регенерации, координаты которого задаются двумя первыми аргументами.