Принципы и цели Ядра графической системы

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

Основные причины, обусловившие необходимость введения такого стандартного набора функций базового уровня машинной графики, следующие:

- обеспечение безболезненного переноса прикладных графических программ между различными установками;

- оказание помощи прикладным программистам в понимании и применении графических методов;

- ориентирование производителей графического оборудования в правильном выборе и комбинации графических возможностей новых устройств.

Для достижения указанных целей к разработке ЯГС были предъявлены следующие требования:

ЯГС должно включать возможности, существенные для всех типов машинной графики – от простого пассивного вывода до высоко интерактивного взаимодействия;

ЯГС должно поддерживать и единообразно управлять всеми графическими устройствами, включая векторные и растровые, устройствами вывода на микрофильм, дисплеями на запоминающей трубке, с регенерацией и цветными;

ЯГС должно отвечать требованиям большинства приложений без чрезмерного увеличения или усложнения.

Из этих требований сформулированы принципы.

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

Цели проекта. Ни одно техническое решение не должно нарушать:

- согласованность – обязательные требования стандарта не должны быть противоречивыми;

- совместимость – другие стандарты или общепризнанная практика не должна нарушаться;

- ортогональность – функции и модули ЯГС не должны зависеть друг от друга, в противном случае зависимость должна иметь структурный характер и должна быть четко выделена.

Функциональные возможности. Для определения состава использовались критерии:

- полнота – все запросы большинства приложений должны удовлетворяться на каком-либо функциональном уровне;

- неизбыточность – данный функциональный уровень не должен включать возможности, лишние для соответствующих приложений;

- компактность – результат должен достигаться с возможно меньшим набором функций и их параметров;

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

Интерфейс пользователя. В разработку интерфейса пользователя включены принципы:

- комфортабельность – ЯГС должно допускать адаптацию интерфейса к нуждам пользователя;

- прозрачность – концепции и функциональные возможности ЯГС должны быть ясны и понятны, особенно прикладному программисту;

- устойчивость – реакция на сбои функций и модулей системы, вызванные как внутренними ошибками, так и ошибками прикладной программы, должна быть четко определенной и информативной для прикладного программиста, а влияние сбоев на систему и прикладную программу – по возможности минимальным.

Ясность и разумная обработка ошибок является неотъемлемыми частями обеспечения «дружественности» к пользователю (комфортабельности). Спецификации подсистемы обработки ошибок входят как компонент в состав стандарта.

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

Графические устройства. На поддержку всех графических устройств, к которым имеется доступ со стороны ЯГС, распространяются следующие принципы:

- приборная независимость – функции ЯГС должны быть спроектированы таким образом, чтобы позволить прикладной программе, их использующей, обращаться к различным устройствам графического ввода вывода без предварительного изменения ее структуры;

- приборная широта – возможности всех графических устройств ввода-вывода должны использоваться в стандарте в полном объеме.

На этих принципах построена одна из фундаментальных концепций архитектуры ЯГС – концепция множества независимых графических рабочих станций, доступных и управляемых системой. Прикладная программа может узнать возможности любой станции.

Реализация. С реализацией и применением связана последняя группа принципов:

- реализуемость – разработка функций ЯГС должна быть возможна на большинстве основных языков программирования в среде большинства операционных систем и для большинства графических устройств;

- языковая независимость – необходимо, чтобы все стандартные средства можно было выразить средствами стандартных языков программирования;

- эффективность – стандарт должен быть реализуем без привлечения алгоритмов, требующих больших временных затрат;

- надежность – оператор и прикладной программист должны быть в максимальной степени ограждены от последствий сбоев аппаратуры или программного обеспечения.

Перечисленные пять групп принципов взаимосвязаны. Однако некоторые принципы противоречат друг другу, например, широта – неизбыточности, тщательная обработка ошибок – эффективности и другие. Приходится прибегать к компромиссам, чтобы достичь главной цели: ЯГС должно иметь легко понятную структуру и такой набор функций, который позволяет большинству пользователей машинной графики составлять переносимые и независимые программы, использующие весь спектр графического оборудования.

Основные понятия Ядра графической системы

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

- синтез и воспроизведение изображений;

- направление частей изображения, определенных в различных пользовательских системах координат, на различные графические станции и преобразование их координат в координаты соответствующих устройств;

- управление станциями, к которым имеет доступ система;

- обслуживание ввода данных со станций;

- поддержка разбиения изображения на части, которые можно независимо обрабатывать (рисовать, преобразовывать, копировать, удалять);

- долговременное хранение изображений.

Рассматривая такие концепции, как отражение текущего состояния системы в специальных таблицах, группирование функций на уровни с возрастающими возможностями и обработка ошибок позволяют облегчить реализацию и эксплуатацию системы. Очень важной характеристикой графической системы можно назвать размерность пространства, в котором задаются обрабатываемые ею геометрические объекты. В настоящий момент стандарт определяет ЯГС как чисто двумерную систему (2D), но в тоже время бурно развиваются трехмерные (3D) расширения стандарта.

Рассмотрим, какими понятиями оперирует система машинной графики.

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

Система координат и преобразования: примитивы вывода могут задаваться при создании в одной или нескольких системах координат пользователя. Эти примитивы должны быть размещены на носителе изображения различных графических станций с различными приборными системами координат. Последовательность изменений, претерпеваемая графическим выводом на пути от прикладной программы к носителю изображения устройства, называется видовым конвейером (viewing pipeline).

Управление направлением перемещения и преобразованием примитивов вывода, проходящих через видовой конвейер, берет на себя графическая система. Используя соответствующие функции, прикладная программа может воздействовать на преобразование вывода. В трехмерных системах видовое преобразование трехмерных координат на двумерную картинную плоскость является одной из операций видового конвейера.

Графические станции: единственное устройство вывода и несколько устройств ввода объединяются в понятие графическая рабочая станция (workstation) или просто станция. Каждой из них управляет, как правило, один оператор. Станцией считается, например, графопостроитель или дисплей, оснащенный клавиатурой или планшетом. Концепция станций является одним из оригинальных вкладов ЯГС в общую методологию построения графических систем.

Ввод: при взаимодействии с оператором прикладной программе необходимы средства для получения данных, поступающих с графической станции. Помимо собственно графической информации (значений координат или идентификации частей изображения) в ЯГС возможны также ввод строк литер, выбор альтернатив, например с помощью функциональной клавиатуры, и получение значений от устройств типа потенциометра. Благодаря наличию концепции логических устройств ввода ввод в ЯГС является независимым от конкретных физических устройств.

Сегментация: концепция сегментации связана с необходимостью обеспечить возможность работы над отдельными частями изображения, называемыми сегментами. Их можно независимо визуализировать, преобразовывать, копировать, удалять. Сегмент может быть выделен оператором, а идентифицирующая его информация может быть передана в прикладную программу. ЯГС обладает очень мощными средствами сегментации, что в первую очередь относится к возможности хранения сегментов в приборно-независимой форме, а также к функциям вывода копий сегмента на несколько станций или их вставки в другие сегменты.

Метафайл: служит средством сохранения изображений с целью их записи в архив, транспортировки или обмена с другими системами. Интерфейс метафайла ЯГС допускает запоминание в долговременной памяти и считывание изображений из нее, что существенно увеличивает гибкость системы в целом.

Таблица состояния: в любой момент ЯГС находится в некотором функциональном состоянии, которое характеризуется параметрами, отражаемыми в соответствующих таблицах. Значения этих параметров изменяются функциями ЯГС, вызываемыми в процессе выполнения прикладной программы. Текущее состояние может определять, например, перечни доступных графических станций или существующих сегментов. Эта концепция, получившая развитие в ходе проектирования ЯГС, должна полно и точно отражать эффект выполнения функций и помочь в реализации конкретных версий системы.

Уровни: все функции ЯГС соотнесены с девятью различными уровнями. Если в самый нижний уровень входит минимальный набор функций, обслуживающих только вывод, то самый верхний включает все возможности ЯГС. Таким образом, разработчику достаточно реализовать только тот уровень системы, который по своему функциональному объему удовлетворяет данным приложениям.

 

Таблица 1

Распределение возможностей ЯГС по уровням
Ввод   Вывод   Без ввода   Ввод в режиме ЗАПРОС Ввод в полном объеме
Минимальный вывод Все пять примитивов вывода; все индивидуально задаваемые атрибуты; поддержка ОПВ на уровне станции; предопределение связки – как минимум по 5 связок ломаной, полимаркера, полигональной области и 2 связки текста; несколько преобразований нормирования (минимум одно изменяемое); необязательные функции работы с метафайлом; концепция нескольких станций (по крайней мере, одна для вывода) Функции запроса для устройств ВВОД ПОЗИЦИИ, ВВОД ПОСЛЕДОВАТЕЛЬНОСТИ ПОЗИЦИЙ, ВВОД ЧИСЛА, ВВОД СТРОКИ и ВЫБОР; функции инициализации и задания режимов работы устройств; функция ЗАДАТЬ ПРИОРИТЕТ ПОЛЯ ВЫВОДА ПРИ ВВОДЕ; по крайней мере, одна доступная для ввода станция Концепция ввода в режиме ОПРОС и СОБЫТИЕ     Очередь отчетов о событиях ввода
Вывод в полном объеме и базовые возможности сегментации Несколько станций; полная концепция связок атрибутов (возможная переустановка предопределенных связок, по крайней мере, 20 задаваемых пользователем связок); обязательные функции и станции работы с метафайлом; базовые возможности (функции) сегментации Функции запроса, инициализации и задания режимов работы устройства УКАЗАНИЕ Ввод в режиме ОПРОС и СОБЫТИЕ для устройства УКАЗАНИЕ
Вывод с использованием памяти сегментов Общая память сегментов; функции ВСТАВИТЬ СЕГМЕНТ, ВЫВЕСТИ КОПИЮ СЕГМЕНТА НА СТАНЦИЮ, СВЯЗАТЬ СЕГМЕНТ СО СТАНЦИЕЙ    

 

Таблица 2

Минимальные возможности, необходимые на каждом уровне ЯГС
Возможность Уровень
0a 0b 0c 1a 1b 1c 2a 2b 2c
Количество цветов (интенсивностей) 1 1 1 1 1 1 1 1 1
Типы линий 4 4 4 4 4 4 4 4 4
Ширина линий 1 1 1 1 1 1 1 1 1
Предопределенные связки ломаной 5 5 5 5 5 5 5 5 5
Устанавливаемые связки ломаной - - - 20 20 20 20 20 20
Типы маркера 5 5 5 5 5 5 5 5 5
Размер маркера 1 1 1 1 1 1 1 1 1
Предопределенные связки полимаркера 5 5 5 5 5 5 5 5 5
Устанавливаемые связки полимаркера - - - 20 20 20 20 20 20
Высота литеры (см. прим. 1) 1 1 1 1 1 1 1 1 1
Масштабы расширения литеры (см.прим. 1) 1 1 1 1 1 1 1 1 1
Шрифты точности ДО СТРОКИ 1 1 1 1 1 1 1 1 1
Шрифты точности ДО ЛИТЕРЫ 1 1 1 1 1 1 1 1 1
Шрифты точности ДО ШТРИХА 0 0 0 2 2 2 2 2 2
Предопределенные связки текста 2 2 2 6 6 6 6 6 6
Устанавливаемые связки текста - - - 20 20 20 20 20 20
Предопределенные шаблоны (см. прим.2) 1 1 1 1 1 1 1 1 1
Устанавливаемые шаблоны (см. прим.2 и 5) - - - 10 10 10 10 10 10
Типы штриховки (см. прим.3) 3 3 3 3 3 3 3 3 3
Предопределенные связки полигональной области 5 5 5 5 5 5 5 5 5
Устанавливаемые связки полигональной области - - - 10 10 10 10 10 10
Устанавливаемые преобразования нормирования 1 1 1 10 10 10 10 10 10
Приоритеты сегментов (см. прим.4) - - - 2 2 2 2 2 2
Классы устройств ввода - 5 5 - 6 6 - 6 6
Типы подсказки и эха - 1 1 - 1 1 - 1 1
Размер очереди событий (см. прим.5) - - 20 - - 20 - - 20
Максимальный размер буфера устройства ввода строки (в литерах) - 72 72 - 72 72 - 72 72
Максимальный размер буфера устройства ввода последовательности позиций (в точках) - 64 64 - 64 64 - 64 64
Число станций вывода или ввода-вывода 1 1 1 1 1 1 1 1 1
Число станций ввода или ввода-вывода - 1 1 - 1 1 - 1 1
Общая память сегментов - - - - - - 1 1 1
Станции вывода метафайла 0 0 0 1 1 1 1 1 1
Станции ввода метафайла 0 0 0 1 1 1 1 1 1
О б о з н а ч е н и я : 0 определенная, но не обязательная на данном уровне возможность; - функция на данном уровне не определена. П р и м е ч а н и я : 1. Для текста точности ДО СТРОКИ и ДО ЛИТЕРЫ. 2. Для станций, обеспечивающих заполнение ПО ШАБЛОНУ. 3. Для станций, обеспечивающих заполнение ШТРИХОВКА. 4. Для станций, обеспечивающих приоритеты сегментов. 5. В связи с ограниченностью ресурсов и переменным размером записей достижение указанных значений не всегда возможно.

 

Таблица 3

Распределение приложений по уровням
Уровень Приложения
0a Деловая графика; вывод в метафайл и на микрофильм; ввод и интерпретация метафайла; драйвер графического вывода для моделирующих систем типа трехмерных
0b Интерактивная деловая графика; управление процессами; системы рисования простых изображений; отработчик ввода для систем более высокого уровня
0c Системы с усиленными требованиями к интерактивному вводу типа оцифровки контуров; оптимальное использование возможностей физических устройств ввода через объединение логических устройств ввода
1a 1b 1c Системы с несколькими станциями; одновременный просмотр нескольких изображений; манипулирование частями изображений в диалоге; системы проектирования и моделирования
2a 2b 2c Чертежные системы и системы проектирования с максимальным использованием средств ЯГС; составление изображений на основе заранее определенных подкартин; перенос изображений между станциями; системы автоматизации конторской деятельности; графические редакторы; приложения САПР.

 

 

Таблица 4

Соответствие процессоров и графических устройств уровням
Уровень Процессоры Графические устройства
0a Начиная с 8-разрядных процессоров (8, 16, 20, 32, 36, …бит в слове); статическое распределение оперативной памяти; медленная внешняя память. Вывод на микрофильм; растровые и векторные графопостроители; алфавитно- цифровые дисплеи и принтеры; телемониторы; простые запоминающие трубки; несложные растровые и векторные устройства
0b Такие же, как и для уровня 0a Устройства вывода, как для уровня 0a; устройства ввода типа алфавитно-цифровой и функциональной клавиатуры, световых перьев, планшетов и т.п.
0c Начиная с 16-разрядных процессоров; возможности мультизадачности или программной обработки прерываний; для организации очереди событий может понадобиться динамическое управление памятью Уровень 0b плюс оцифровщики и ощупыватели форм
1a 1b 1c Начиная с 16-разрядных процессоров с динамической или виртуальной памятью; желателен быстрый доступ к внешней памяти Векторные устройства с сегментированным дисплейным файлом; желательны аппаратное отсечение и преобразование; запоминающие трубки с частичной регенерацией; растровые устройства с несколькими слоями изображения; быстрые интеллектуальные растровые дисплеи с микрокомпьютером, обеспечивающим, например, удаление невидимых линий; для систем уровня 1b и 1c световые перья, возвращающие идентификаторы сегментов, вычисленные по адресам дисплейного файла для векторных устройств или путем сравнения координат на растровых устройствах.
2a 2b 2c Как в системах уровня 1, но с упором на эффективное управление памятью

 

Обработка ошибок: вместе с каждой функцией ЯГС определяет некоторое число ошибочных состояний, которые могут быть зафиксированы во время выполнения функции. В случае возникновения такого ошибочного состояния прикладная программа может либо удовлетворяться стандартной реакцией системы, либо предпочесть собственные средства управления обработкой ошибок.

Размерность системы координат: то, что в настоящий момент ЯГС является двумерной системой, удовлетворяет потребностям большинства приложений машинной графики. Это означает, что все вводимые и выводимые позиции представляются в двумерном пространстве. Тем не менее в некоторых приложениях могут потребоваться объемные примитивы вывода, такие как прямые в трехмерном пространстве и отсеки пространства или даже трех координатный ввод.

Эти базовые понятия рассмотрим более подробно








Дата добавления: 2015-10-09; просмотров: 794;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.02 сек.