
- •Элементы интерактивной компьютерной графики
- •Класс 2: двухуровневые или представляемые в нескольких «цветах» изображения
- •Структура графического изображения
- •Блок-схема графической системы
- •Методы кодирования графической информации
- •Позиционные методы кодирования ги. Рецепторный метод кодирования
- •Метод тетрарного дерева
- •Структурные методы кодирования Цепной метод кодирования
- •Кусочно – линейная аппроксимация контура изображения
- •Аппроксимация группы точек окружностью
- •Аналитические методы кодирования
- •Методы структурно – символического кодирования
- •Типичная система команд дисплейного процессора
- •Форматы дисплейных команд
- •А) Команды, управляющие лучом гд.
- •Геометрические преобразования
- •Двумерные преобразования Перенос (сдвиг)
- •Масштабирование
- •Поворот изображения
- •Однородные координаты и матричное представление двумерных преобразований
- •Композиция двумерных преобразований
- •Вопросы эффективности
- •Матричное представление трехмерных преобразований
- •Видовая операция (отсечение части изображения по прямоугольному окну)
- •Высокопроизводительные графические преобразования
- •Алгоритмы растровой графики
- •Алгоритм Брезенхэма для отрезков прямых
- •Растровая развертка окружностей
- •Алгоритм брезенхема для генерации окружности
- •Типы графических дисплеев Векторный дисплей
- •Организация памяти в растровых графических дисплеях
- •Организация дисплейного файла
Типы графических дисплеев Векторный дисплей
Превращение
дисплея в автономный процессор освобождает
центральный процессор от задачи
регенерации.
Для этого следует включить в ДП аппаратуру, позволяющую определять только конечные точки прямой линии и фактически ее рисующую (рис. 3.26). Добавляемая аппаратура состоит из пары регистров (Хпред, Yпред), предназначенных для хранения конечной точки прямой, и генератора векторов, основная задача которого состоит в перемещении электронного луча строго по прямой линии от одной точки к другой. Устройство генератора векторов описывается в следующем разделе.
Включение в состав дисплея генератора векторов означает, что необходимо расширить набор команд ДП. Функции, выполняемые ДП, помимо рисования точки и перехода теперь содержат перемещение электронного луча в некоторую позицию (без рисования) и рисование прямой линии. Во всех командах манипулирования лучом координаты конечной его позиции записываются в Х- и У-регистры; после того как луч переместится в конечную позицию, управляющая логика автоматически перешлет содержимое X и Y в регистры Хпред, Yпред. При наиболее часто встречающейся длине команды дисплея 16 бит требуется 5 команд:
1. Загрузить X.
2. Загрузить Y и переместить луч в позицию (х, у).
3. Загрузить Y, переместить луч в позицию (х, у) и нарисовать точку.
4. Загрузить Y и нарисовать отрезок прямой от позиции (Xпред, Yпред) до позиции (х, у).
5. Переход.
Комбинируя эти команды различным образом, можно рисовать точки, связанные и несвязанные последовательности отрезков
С помощью генератора векторов можно также рисовать прямолинейные участки символов и осуществлять кусочно-линейную аппроксимацию кривых (это лучше, чем рисовать большое число отдельных точек). При рисовании кривой необходимо учитывать одну особенность — в областях, где кривая имеет маленький радикс кривизны, отрезки прямых должны быть короче, чем в областях, где радиус кривизны относительно велик.
* Генераторы векторов.
При внимательном анализе задача, возлагаемая на генератор векторов, оказывается довольно сложной.
Исходные требования формулируются следующим образом:
1. Перемещать электронный луч из позиции (Хпред, Yпред) в позицию (х, у) по прямой линии или по крайней мере по линии, которая кажется наблюдателю прямой.
2. Рисовать все линии с одинаковой яркостью. Чем медленнее движется луч, тем больше электронов бомбардируют данный участок люминофора, заставляя его светиться ярче. Постоянная яркость может быть достигнута либо перемещением луча с постоянной скоростью для всех векторов, либо изменением интенсивности луча для разных векторов, либо комбинацией этих двух способов. Задача состоит в том, чтобы обеспечить попадание в каждую точку прямой одного и того же числа электронов, учитывая при этом скорость перемещения луча.
3. Включать луч точно в тот момент, когда он начинает перемещаться из начальной точки, и выключать в момент прихода в конечную точку — не раньше и не позже.
4. Выполнять все операции как можно быстрее.
Генератор векторов должен управлять тремя параметрами отклонением по х, отклонением по у и интенсивностью. Если компенсация интенсивности не требуется (т. е. векторы рисуются с одной и той же скоростью), сигнал управления интенсивностью превращается просто в сигнал его включения и выключения. На рис. 3.27 показаны сигналы, требуемые для рисования нескольких различных отрезков прямых с постоянной скоростью. Графики сигналов отклонения по х и у откалиброваны таким образом, что по вертикальной оси отложены единицы растра, а по горизонтальной — время. Отсчет времени ведется с момента начала генерации вектора, Тмакс — максимальное время, необходимое для рисования самого длинного вектора. Из анализа графиков следует, что фактическое время, необходимое для рисования вектора, пропорционально большему из приращений его координат.
Критерии оценки. О качестве генераторов векторов судят по их линейности, скорости, постоянству яркости и точности совпадения с граничными точками. Линейность определена в предыдущем разделе. Скорость обычно равна константе или некоторой функции длины вектора. В последнем случае время рисования коротких векторов постоянно, поскольку основную его часть будет составлять время загрузки регистров. Многие генераторы векторов не обеспечивают постоянства яркости: нередко один конец отрезка иногда и оба оказываются более яркими. Это объясняется тем, что этих местах скорость луча меньше нормальной и в единицу времени люминофор бомбардируется большим числом электронов. Точность совпадения с граничными точками характеризует точность включения луча в начальной точке вектора и выключения в конечной точке.
Один из тестов проверки совпадения заключается в рисовании точки в позиции В, отрезка из позиции А в позицию В и точки в позиции А. Точки и концы отрезка при этом должны хорошо совпадать.
Другой тест состоит в рисовании нескольких отрезков из различных начальных позиций в один общий центр Р: все линии должны закончиться точно в точке Р
ДИСПЛЕЙНЫЙ ПРОЦЕССОР С РАСТРОВЫМ СКАНИРОВАНИЕМ
В системе с произвольным сканированием примитивы, составляющие изображение, кодируются командами, в которых используются координаты конечных точек векторов. В системах с растровым сканированием кодирование намного проще: рисуемые на экране примитивы разбиваются на составляющие их точки.
Основное различие между векторным и растровым дисплеями состоит в организации памяти, хранящей точки. В точечном дисплее точки, составляющие каждый примитив, хранятся в памяти последовательно и рисуются в этом же порядке, примитив за примитивом, поскольку луч может двигаться по экрану произвольным образом. В растровом же дисплее память регенерации организована в виде двумерного массива.
Элемент, находящийся на пересечении конкретных строки и столбца, хранит значение яркости и/или цвета соответствующей точки экрана. Механизм этого простого взаимнооднозначного соответствия показан на рис— позиция экрана и элемент в памяти адресуются х-координатой (изменяющейся от 0 до М—1) и у-координатой (изменяющейся от 0 до N—1). Верхняя строка массива соответствует верхней строке растра и т. д. Регенерация изображения осуществляется последовательным сканированием буфера по строкам растра (а не по примитивам, как при произвольном сканировании).
Поскольку каждый элемент памяти определяет один элемент изображения (или картинки) размером с точку, каждая точка экрана (и соответствующий ей элемент памяти) часто обозначается термином пиксел. Мы будем использовать термин пиксел для обозначения точек на экране растрового дисплея, а термины элементы картинки и примитивы вывода — для примитивов более высокого уровня, таких, как линии, точки и литеры.
Простой буфер регенерации содержит по одному биту на пиксел и, таким образом, определяет двухцветное (обычно черно-белое) изображение. В современных системах буфер регенерации, называемый также буфером кадра или битовой картой, реализуется на твердотельной полупроводниковой памяти с произвольным доступом.
Задача системы вывода изображения (рис. 3.35) состоит в циклическом просмотре буфера регенерации по строкам (следовательно, по строкам растра). Адреса памяти генерируются синхронно с координатами растра, и содержимое выбранных элементов памяти используется для управления интенсивностью электронного луча.
Общая организация системы вывода изображения приведена на рис. 3.36. Генератор растровой развертки формирует сигналы отклонения и управляет адресными Х- и Y-регистрами, определяющими следующий элемент буфера регенерации.
В начале цикла регенерации в Х-регистр записывается 0, а в Y-регистр – (N-1) (верхняя строка растра). По мере того как генерируется первая строка растра, х-адрес увеличивается до М—1, при этом значение каждого пиксела извлекается из памяти и используется для управления интенсивностью электронного луча. После генерации первой строки растра х-адрес опять записывается О, а у-адрес уменьшается на 1. Этот процесс продолжается до генерации последней строки растра (у=0).
Причина низкой стоимости простых растровых дисплеев очевидна: их основные компоненты представляют собой полупроводниковую память, некоторые логические схемы, генератор развертки и телевизионный монитор. Поскольку мы отказались от произвольного рисования векторов, то отпала необходимость в быстрых, линейных, точных генераторах векторов и связанных с ними высокоточных усилителях отклоняющей системы.
Для растровых дисплеев не существует проблемы мерцания изображения независимо от его сложности.