Функции графических систем
Интерактивные графические системы выполняют следующие функции:
· ввод данных;
· вывод графических изображений;
· обработка запросов пользователя;
· поиск и хранение данных;
· реализация преобразований графической информации.
Функции ввода реализуются с помощью графических устройств ввода: клавиатуры, планшета, мыши, светового пера и т. д.
Функции вывода с помощью графических устройств вывода: графопостроителя, дисплея, станка с ЧПУ.
Функции обработки запросов пользователя на входных и командных языках реализуются программой, называемой лингвистическим (диалоговым) процессором. Процессор преобразует описания геометрии объектов, заданные на входных языках, в формы, принятые в системе. В настоящее время наиболее эффективный метод работы пользователя с графической системой диалоге использованием меню. Данные, получаемые системой через диалоговый процессор, делятся на два класса: параметры объекта и коды для управления графической системой. Первые поступают из входных языков, вторые - из командных. Параметры объекта направляются через СУ БД и базу данных. Коды для управления графической системой поступают на монитор. Он управляет работой системы.
Организация базы данных графической системы определяется классами моделей объектов. Если объекты проектирования имеют графическое представление (схемы, планы, чертежи), в базе данных хранятся модели графических изображений этих объектов. Ориентация системы на объект определяет наличие в базе данных геометрических моделей объектов в трехмерном пространстве.
Формирование моделей и их модификаций, а также преобразование этих моделей выполняет геометрический процессор. В зависимости от сложности модели объекта в системе может исполняться несколько геометрических процессоров.
Геометрический процессор может выполнять и следующие функции:
· построение сечений и разрезов;
· проверка корректности геометрической компоновки узла конструкции;
· моделирование работы робота.
Для систем, работающих с двумерными геометрическими объектами, функции формирования, модификации и преобразования геометрической модели выполняет графический процессор.
1.4 Блок-схема графической системы
Блок-схема графической системы приведена на рис. 1.3. В памяти размещаются два важных информационных модуля:
· прикладная структура данных, содержащая описание объектов, изображения которых должны показываться на экране. Она же является моделью объектов;
· дисплейная программа, которая формируется графическим пакетом и читается дисплейным процессором во время регенерации изображения на экране;
Канал вывода (от описания объекта к его изображению).
Прикладная программа извлекает информацию из прикладной структуры данных и записывает ее, а затем направляет графические команды, которые обрабатываются графическим макетом. Последний формирует дисплейную программу, используемую дисплейным процессором для получения изображении. Таким образом, канал вывода последовательно преобразует описание объекта в структуру представления, принятую в дисплейной программе.
Канал ввода(от устройств ввода к структуре данных и дисплейной программе).
Дисплейный процессор регистрирует факт использования устройства ввода и либо прерывает, либо передает данные по запросу. Ввод данных от дисплейного процессора осуществляет специальная программа ввода, которая передает их прикладной программе. Эти данные меняют состояние прикладной программы. Они могут также побудить прикладную программу модифицировать структуру данных, изменить параметры.
1.5. Получение изображения на векторном дисплее
В векторных дисплеях электронный луч, управляемый дисплейным процессором, создает изображение, двигаясь от точки к точке по отрезкам прямых, которые называются векторами. Для получения изображения необходимы хранение координат точек и генератор векторов. С помощью генератора векторов можно рисовать прямолинейные участки символов и осуществлять кусочно-линейную аппроксимацию кривых. При рисовании кривой необходимо учитывать следующую особенность: в областях, где кривая имеет малый радиус кривизны, отрезки прямых должны быть короче, чем в областях, где радиус кривизны относительно велик.
Максимальная скорость вычерчивания векторов — около 2 см/мкс. В лучших системах за один цикл регенерации выводится 6-10 тыс. векторов длиной 2-3 см.
Генератор векторов
Генератор векторов должен выполнять следующие действия:
1. Перемещать электронный луч из позиции (xпред, yпред) в позицию (x, у)по прямой линии или, по крайней мере, по линии, которая кажется наблюдателю прямой.
2. Рисовать все линии с одинаковой яркостью. Чем медленнее движется луч, тем ярче светится получаемая линия. Постоянная яркость может быть достигнута либо перемещением луча с постоянной скоростью для всех векторов, либо изменением интенсивности луча для разных векторов.
3. Включать луч точно в тот момент, когда он начинает перемешаться из начальной точки, и выключать в момент прихода в конечную точку.
4. Осуществлять все операции как можно быстрее.
Генератор векторов должен управлять тремя параметрами:
· отклонением по оси X
· отклонением по оси Y
· интенсивностью.
Если векторы рисуются с одной и той же скоростью, сигнал управления интенсивностью превращается просто в сигнал его включения и выключения. Для изображения прямой линии, проходящей от точки(xt,у) к точке(xty1),необходимо дополнить массивы .V и Y координатами точек, лежащих приблизительнона этой прямой. Приблизительно, потому что для некоторого целого х соответсвующее ему у может оказаться нецелым, Потому возникает необходимость и округлении или отсечении.
Относительные координаты
Рассмотрим дисплейную программу, изображающую треугольник (рис. 1.4).
загрузка X 100
загрузка У + перемещение 100
загрузка X 300
загрузка У + рисование 0
загрузка X 400
загрузка У + рисование 350
загрузка X 100
загрузка У + рисование 100
переход цикл
Все идет хорошо до тех пор, пока и прикладной программе не возникнет необходимость переместить треугольник и другую точку экрана, например на ∆x=-50, ∆у=-100. Существуют два способа решения этой задачи.
Первый: прикладная программа находит описание треугольника в прикладной структуре данных, изменяет значения координат вершин и вызывает графический пакет дли создания новой дисплейной программы.
Или второй, более эффективный: Прикладная программа выдает графическому пакету запрос на изменение сегмента дисплейной программы, который генерирует треугольник. Изменение заключается в вычитании 50 из всех координат и прибавлении 100 ко всем координатам. Для треугольника эта процедура будет выполнена быстро, но для сложных объектов она будет более трудоемкой.
Ещё проще реализуется перемещение, когда координаты объекта можно задавать абсолютными и относительными величинами. Дисплейная программа имеет вид:
Цикл:
загрузка X абс. 100
загрузка Y абс. + перемещение 100
загрузка X отн. 200
загрузка Y отн. + рисование -100
загрузка X отн. 100
загрузка Y отн. + рисование 350
загрузка X отн. -300
загрузка Y отн. + рисование -250
переход цикл
Таким образом, для перемещения треугольника достаточно модифицировать значения начальных координат x и у.
Генератор символов
Существуют четыре способа генерации символов:
· метод маски;
· метод Лиссажу;
· штриховой метод;
· метод точечной матрицы.
Метод маски
Луч ЭЛТ описывает фигуру, как на рис. 1.6 (24 штриха). Символ генерируется путем высвечивания одних штрихов и пропуска других. Символ кодируется 24- разрядным словом, в котором каждый разряд представляет один штрих.
Если в разряде 0, то штрих пропускается, если 1, то штрих высвечивается.
Недостатки метода:
· низкое качество символов:
· низкая старость, так как луч должен пойти по всея маске для любого ствола:
· необходима перекодировка из ASCII в специальный 24-разрялный код
Метод Лиссажу
Для формирования символов используются фигуры Лиссажу. Этот способ получения символов является аналоговым. Различные возможности генерирования примитивов (отрезков и дуг), из которых формируются символы, показаны на рис. 1.7.
Достоинства метода: хорошее качество, плавность линий, что особенно важно для строчных букв: S3; любые формы символов.
Недостатки метола: низкая скорость; высокая стоимость аппаратной части.
Штриховой метод
Штриховой генератор символа представляет собой аналоговое устройство, которое выдает волны различной формы отдельно для отклонения луча ЭЛТ по направлениям X и У, а также сигнал яркости в виде «вкл./выкл.» (рис. 1.8).
Недостатком указанного метода является его высокая стоимость.
Метод точечной матрицы
Генератор символов с точечной матрицей является чисто цифровым устройством, поэтому он надежный и недорогой. Символы будут удовлетворительного качества при условии, что они малы. Поэтому они часто используются в алфавитно-цифровых дисплеях.
Символ генерируется путем высвечивания последовательности точек. Луч ЭЛТ последовательно проходит через поля матрицы символа. В каждом поле матрицы луч может быть либо включен, либо выключен (рис. 1.9).
Для символа 5x7 необходимо 35 бит.
Рис. 1.9. Метод точечной матрицы
Достоинством данного метода является низкая стоимость, а недостатком — плохое качество при увеличении размера букв. НА УЧАСТКЕ МЕЖДУ ЖЕЛТЫМ МАРКИРОВАНИЕМ – НУЖНО РЕДАКТИРОВАНИЕ
1.6. Получение изображения на растровом дисплее
В системах с растровым сканированием кодирование изображения проще, чем в рассмотренных выше. Рисуемые на экране примитивы разбиваются на составляющие их точки. Основное различие между векторным и растровым дисплеями состоит в организации памяти, хранящей точки. В векторном дисплее точки, составляющие каждый примитив, хранятся в памяти последовательно и рисуются в этом же порядке, примитив за примитивом, так как луч может двигаться по экрану произвольным образом. В растровом дисплее память регенерации организована в виде двумерного массива. Элемент, находящийся на пересечении строки и столбца, хранит значение яркости или цвета соответствующей точки экрана. Верхняя строка массива соответствует верхней строке растра. Регенерация изображения осуществляется последовательным сканированием буфера по строкам растра.
Простой буфер регенерации содержит по 1 биту на пиксели, таким образом, определяет двухцветное (черно-белое) изображение. Задача системы вывода изображения состоит в циклическом просмотре буфера регенерации по строкам, обычно от 30 до 100 раз в секунду. Адреса памяти генерируются синхронно с координатами растра, и содержимое выбранных элементов памяти используется для управления интенсивностью электронного луча (рис. 1.10).
Генератор растровой развертки формирует сигналы отклонения и управляет адресными X- и Г-регистрами, определяющими следующий элемент буфера регенерации.
В начале цикла регенерации в Х-регистр записывается 0, а в У-регистр — N - 1 (верхняя строка растра). Пока регенерируется первая строка растра, Х-адрес точки увеличивается до М - 1, при этом значение каждого пиксела извлекается из памяти и используется для управления интенсивностью электронного луча. После генерации первой строки растра в Х-адрес опять записывается 0, а Y-адрес уменьшается на 1. Этот процесс продолжается до генерации последней строки растра (у * 0). По окончании сканирования растра система вырабатывает сигнал прерывания. Компьютер может произвести изменения в хранящемся в памяти изображении. Для этого у него есть время обратного хода (около 1 мс), в течение которого электронный луч перемещается из правого нижнего угла в левый верхний.
Каждый полный проход сканирующего луча по экрану дает неподвижную картинку, или кадр. За одну секунду генерируется от 30 до 100 таких кадров. Вследствие генерации зрительного восприятия последовательность постепенно меняющихся кадров может передавать движение плавно, без скачков. Однако даже при такой частоте картинка кадра на экране немного мерцает. Этот нежелательный эффект обычно устраняют чередованием строк каждой пары последовательных кадров.
При реализации метода чередования строк на экран выводится, например, не 30, а 60 кадров за одну секунду, то есть в два раза больше. Электронный луч проходит по нечетным строкам, формируя первый кадр, второй же кадр после возвращения луча в левый верхний угол экрана создается сканированием по четным строкам.
Для получения двухцветного, например черно-белого, изображения достаточно одного бита на пиксел. Он принимает значение 0 (пиксел выключен) или 1 (пиксел включен). Двухцветных изображений обычно недостаточно, и возникает необходимость использовать яркость (в случае двухцветного полутонового изображения) или цвет. Дополнительные возможности можно получить, храня для каждого пиксела несколько бит (два бита — четыре яркости и т. д.). Эти биты могут использоваться для управления не только яркостью, но и цветом.
Сколько бит должен содержать пиксел, чтобы изображение воспринималось наблюдателем как имеющее непрерывные уровни тона? Часто бывает достаточно 5 или 6, но может потребоваться и 8. Таким образом, можно будет получить соответственно 25, 2е или 2е тонов яркости. Для цветных дисплеев требуется в три раза больше бит — по 8 на каждый из основных цветов (красный, зеленый и синий).
Второй путь — включение в состав системы регенерации растровых дисплеев таблицы цветов. Значение пиксела не направляется сразу на ЦАП схемы управления яркостью, как в предыдущем случае, а используется как индекс в таблице цветов. Для управления яркостью или цветом применяется значение, извлеченное из таблицы по этому индексу (рис. 1.11).
Например, значение пиксела 67 привело бы к извлечению из таблицы элемента с номером 67 и использованию его для управления электронным лучом. Эта операция поиска в таблице выполнялась бы для каждого пиксела в каждом цикле регенерации. Поэтому доступ к таблице должен быть очень быстрым. На рис. 1.11 каждый пиксел содержит бит (N = 8), а элемент таблицы цветов — К бит (К = 12). Тем самым для двухцветных дисплеев в первом случае определены 2[1] уровней яркости, а во втором — 2К. В случае цветной картинкиК бит разбиваются на три равные группы, управляющие красным, зеленым и синим цветами.
В качестве примера можно рассмотреть процесс получения 256 цветов режима VGA (рис. 1.12).
При получении 256 цветов VGA берет четырех- или восьмибитные значения из видеопамяти и переводит их в трех- или шестибитные числа (R, G, В), которые переводятся в аналоговый сигнал, подающийся на монитор. ОЗУ палитры и регистры цифро-аналогового устройства (ЦАП) можно устанавливать либо напрямую, либо через BIOS. Но при одновременной перезагрузке большого блока регистров ЦАП происходит мигание. Эта проблема решается, если один раз переустановить цвета в начале программы. Но при быстром изменении цветов для создания спецэффектов это становится проблемой. Решить ее можно, если менять регистры напрямую Правильно чередуя цвета, можно легко имитировать эффект плавного движения, не тронув при этом ни один байт дисплейной программыНапример, легко изобразить закат, последовательно чередуя цвета от самых ярких внизу к самым темным вверху. Аналогично просто изобразить течение реки. Это удобно при создании реалистичных эффектов трехмерной анимации. ЦАП желательно перезагружать только между кадрами, иначе на экране будет появляться снег. И хотя при однократной установке снежинки можно и не заметить, но при постоянной перезагрузке регистров снег превращается в сильную метель.