|
Принципы и цели Ядра графической системыРазработка ЯГС велась для обеспечения набора программных функций машинной графики, отвечающего требованиям большинства приложений, использующих компьютер для генерации визуальных образов. Основные причины, обусловившие необходимость введения такого стандартного набора функций базового уровня машинной графики, следующие: - обеспечение безболезненного переноса прикладных графических программ между различными установками; - оказание помощи прикладным программистам в понимании и применении графических методов; - ориентирование производителей графического оборудования в правильном выборе и комбинации графических возможностей новых устройств. Для достижения указанных целей к разработке ЯГС были предъявлены следующие требования: ЯГС должно включать возможности, существенные для всех типов машинной графики – от простого пассивного вывода до высоко интерактивного взаимодействия; ЯГС должно поддерживать и единообразно управлять всеми графическими устройствами, включая векторные и растровые, устройствами вывода на микрофильм, дисплеями на запоминающей трубке, с регенерацией и цветными; ЯГС должно отвечать требованиям большинства приложений без чрезмерного увеличения или усложнения. Из этих требований сформулированы принципы. Было выделено пять направлений разработки: цели проекта, функциональные возможности, интерфейс пользователя, графические устройства и способы реализации, каждое из которых в свою очередь опиралось на свою группу принципов (критериев). Цели проекта. Ни одно техническое решение не должно нарушать: - согласованность – обязательные требования стандарта не должны быть противоречивыми; - совместимость – другие стандарты или общепризнанная практика не должна нарушаться; - ортогональность – функции и модули ЯГС не должны зависеть друг от друга, в противном случае зависимость должна иметь структурный характер и должна быть четко выделена. Функциональные возможности. Для определения состава использовались критерии: - полнота – все запросы большинства приложений должны удовлетворяться на каком-либо функциональном уровне; - неизбыточность – данный функциональный уровень не должен включать возможности, лишние для соответствующих приложений; - компактность – результат должен достигаться с возможно меньшим набором функций и их параметров; - широта – набор функций должен быть достаточно богат, чтобы предлагаемые им возможности выходили за рамки элементарных и включали средства высокого уровня. Интерфейс пользователя. В разработку интерфейса пользователя включены принципы: - комфортабельность – ЯГС должно допускать адаптацию интерфейса к нуждам пользователя; - прозрачность – концепции и функциональные возможности ЯГС должны быть ясны и понятны, особенно прикладному программисту; - устойчивость – реакция на сбои функций и модулей системы, вызванные как внутренними ошибками, так и ошибками прикладной программы, должна быть четко определенной и информативной для прикладного программиста, а влияние сбоев на систему и прикладную программу – по возможности минимальным. Ясность и разумная обработка ошибок является неотъемлемыми частями обеспечения «дружественности» к пользователю (комфортабельности). Спецификации подсистемы обработки ошибок входят как компонент в состав стандарта. Соответствие критерию прозрачности относится не только к разработке самой системы, но и к ее описанию. Поэтому изложение стандарта разделено: на общую часть, спецификации основных логических структур данных, в которых отражается текущее состояние системы, и на описание функций и их воздействия на эти структуры. Графические устройства. На поддержку всех графических устройств, к которым имеется доступ со стороны ЯГС, распространяются следующие принципы: - приборная независимость – функции ЯГС должны быть спроектированы таким образом, чтобы позволить прикладной программе, их использующей, обращаться к различным устройствам графического ввода вывода без предварительного изменения ее структуры; - приборная широта – возможности всех графических устройств ввода-вывода должны использоваться в стандарте в полном объеме. На этих принципах построена одна из фундаментальных концепций архитектуры ЯГС – концепция множества независимых графических рабочих станций, доступных и управляемых системой. Прикладная программа может узнать возможности любой станции. Реализация. С реализацией и применением связана последняя группа принципов: - реализуемость – разработка функций ЯГС должна быть возможна на большинстве основных языков программирования в среде большинства операционных систем и для большинства графических устройств; - языковая независимость – необходимо, чтобы все стандартные средства можно было выразить средствами стандартных языков программирования; - эффективность – стандарт должен быть реализуем без привлечения алгоритмов, требующих больших временных затрат; - надежность – оператор и прикладной программист должны быть в максимальной степени ограждены от последствий сбоев аппаратуры или программного обеспечения. Перечисленные пять групп принципов взаимосвязаны. Однако некоторые принципы противоречат друг другу, например, широта – неизбыточности, тщательная обработка ошибок – эффективности и другие. Приходится прибегать к компромиссам, чтобы достичь главной цели: ЯГС должно иметь легко понятную структуру и такой набор функций, который позволяет большинству пользователей машинной графики составлять переносимые и независимые программы, использующие весь спектр графического оборудования. Основные понятия Ядра графической системы Существует тесная взаимосвязь между концепциями, положенными в основу графической системы, и задачами, для решения которых она предназначена. Рассмотрим некоторые из этих задач: - синтез и воспроизведение изображений; - направление частей изображения, определенных в различных пользовательских системах координат, на различные графические станции и преобразование их координат в координаты соответствующих устройств; - управление станциями, к которым имеет доступ система; - обслуживание ввода данных со станций; - поддержка разбиения изображения на части, которые можно независимо обрабатывать (рисовать, преобразовывать, копировать, удалять); - долговременное хранение изображений. Рассматривая такие концепции, как отражение текущего состояния системы в специальных таблицах, группирование функций на уровни с возрастающими возможностями и обработка ошибок позволяют облегчить реализацию и эксплуатацию системы. Очень важной характеристикой графической системы можно назвать размерность пространства, в котором задаются обрабатываемые ею геометрические объекты. В настоящий момент стандарт определяет ЯГС как чисто двумерную систему (2D), но в тоже время бурно развиваются трехмерные (3D) расширения стандарта. Рассмотрим, какими понятиями оперирует система машинной графики. Вывод: одним из главных предназначений системы является создание изображений. Для решения этой задачи служит концепция графического вывода. Результирующая картина строится из элементарных объектов, называемых примитивами вывода, чье визуальное представление на носителе изображения графической станции определяется набором атрибутов (цвет, тип линии, толщина линии и др.). Система координат и преобразования: примитивы вывода могут задаваться при создании в одной или нескольких системах координат пользователя. Эти примитивы должны быть размещены на носителе изображения различных графических станций с различными приборными системами координат. Последовательность изменений, претерпеваемая графическим выводом на пути от прикладной программы к носителю изображения устройства, называется видовым конвейером (viewing pipeline). Управление направлением перемещения и преобразованием примитивов вывода, проходящих через видовой конвейер, берет на себя графическая система. Используя соответствующие функции, прикладная программа может воздействовать на преобразование вывода. В трехмерных системах видовое преобразование трехмерных координат на двумерную картинную плоскость является одной из операций видового конвейера. Графические станции: единственное устройство вывода и несколько устройств ввода объединяются в понятие графическая рабочая станция (workstation) или просто станция. Каждой из них управляет, как правило, один оператор. Станцией считается, например, графопостроитель или дисплей, оснащенный клавиатурой или планшетом. Концепция станций является одним из оригинальных вкладов ЯГС в общую методологию построения графических систем. Ввод: при взаимодействии с оператором прикладной программе необходимы средства для получения данных, поступающих с графической станции. Помимо собственно графической информации (значений координат или идентификации частей изображения) в ЯГС возможны также ввод строк литер, выбор альтернатив, например с помощью функциональной клавиатуры, и получение значений от устройств типа потенциометра. Благодаря наличию концепции логических устройств ввода ввод в ЯГС является независимым от конкретных физических устройств. Сегментация: концепция сегментации связана с необходимостью обеспечить возможность работы над отдельными частями изображения, называемыми сегментами. Их можно независимо визуализировать, преобразовывать, копировать, удалять. Сегмент может быть выделен оператором, а идентифицирующая его информация может быть передана в прикладную программу. ЯГС обладает очень мощными средствами сегментации, что в первую очередь относится к возможности хранения сегментов в приборно-независимой форме, а также к функциям вывода копий сегмента на несколько станций или их вставки в другие сегменты. Метафайл: служит средством сохранения изображений с целью их записи в архив, транспортировки или обмена с другими системами. Интерфейс метафайла ЯГС допускает запоминание в долговременной памяти и считывание изображений из нее, что существенно увеличивает гибкость системы в целом. Таблица состояния: в любой момент ЯГС находится в некотором функциональном состоянии, которое характеризуется параметрами, отражаемыми в соответствующих таблицах. Значения этих параметров изменяются функциями ЯГС, вызываемыми в процессе выполнения прикладной программы. Текущее состояние может определять, например, перечни доступных графических станций или существующих сегментов. Эта концепция, получившая развитие в ходе проектирования ЯГС, должна полно и точно отражать эффект выполнения функций и помочь в реализации конкретных версий системы. Уровни: все функции ЯГС соотнесены с девятью различными уровнями. Если в самый нижний уровень входит минимальный набор функций, обслуживающих только вывод, то самый верхний включает все возможности ЯГС. Таким образом, разработчику достаточно реализовать только тот уровень системы, который по своему функциональному объему удовлетворяет данным приложениям.
Таблица 1
Таблица 2
Таблица 3
Таблица 4
Обработка ошибок: вместе с каждой функцией ЯГС определяет некоторое число ошибочных состояний, которые могут быть зафиксированы во время выполнения функции. В случае возникновения такого ошибочного состояния прикладная программа может либо удовлетворяться стандартной реакцией системы, либо предпочесть собственные средства управления обработкой ошибок. Размерность системы координат: то, что в настоящий момент ЯГС является двумерной системой, удовлетворяет потребностям большинства приложений машинной графики. Это означает, что все вводимые и выводимые позиции представляются в двумерном пространстве. Тем не менее в некоторых приложениях могут потребоваться объемные примитивы вывода, такие как прямые в трехмерном пространстве и отсеки пространства или даже трех координатный ввод. Эти базовые понятия рассмотрим более подробно Графический вывод Применение машинной графики, при котором изображения создаются исключительно как результат выполнения функций вывода, без какого – либо вмешательства оператора, называется пассивным графическим выводом. Прикладной программист проверяет правильность работы своей графической программы, изучая созданные программой картины. Если результат его не удовлетворяет, то он вносит изменения в программу. Так создают САПР разрабатываемого изделия. Прямой противоположностью пассивному выводу является графика с вмешательством оператора в процесс графического вывода вводом новых данных – такая графика называется интерактивная машинная графика. В зависимости от типа используемого устройства визуализации способы графического вывода разделяются на координатную (линейную) и растровую графику. Координатная графика – область машинной графики, в которой изображение генерируется с помощью команд визуализации и координатных данных. Обычно базовыми элементами линейной графики служат отрезки прямых (векторы) или их последовательности. Примерами графических устройств, обеспечивающих такой способ вывода, являются перьевые графопостроители и векторные дисплеи. Характерным отличием этих устройств является наличие пишущего узла графопостроителя, или электронного луча. Пишущий узел может быть установлен в произвольную позицию на поверхности визуализации. Перемещая пишущий узел с включенным или выключенным режимом «рисование» (с поднятым или опущенным пером), можно получить видимые или невидимые отрезки. В ЯГС существуют примитивы вывода, учитывающие специфику координатных графических устройств. Термин рисование (inking) – создание линий путем перемещения устройства ввода позиций по поверхности визуализации, при котором оно оставляет за собой след, аналогично карандашу при вычерчивании линии на бумаге. Векторные устройства с регенерацией циклически перерисовывают (обновляют) все векторы, составляющие изображение, создавая тем самым у наблюдателя эффект стабильности картины. Для этого описание изображения хранят в памяти, называемой дисплейным файлом. Растровая графика (Raster graphics) – область машинной графики, в которой изображение генерируется из массива пикселей, упорядоченных по строкам и столбцам. Пиксель (pixel) – наименьший элемент носителя изображения, которому можно индивидуально назначить цвет или степень яркости. Частота регенерации (refresh rate) – количество воспроизведений изображения, выполняемых за 1с. Базовыми элементами растровой картины являются независимо адресуемые изолированные точки носителя изображения. Изображения представляются на устройствах типа растровые цветные дисплеи и электростатические графопостроители. Обычно в растровых устройствах изображение формируется последовательно строка за строкой. Устройство с регенерацией воспроизводят всю матрицу пикселей (экран 1280х1024) с заданной частотой регенерации (например, 25,30,50,60 раз в секунду). Для этого изображение запоминается в памяти хранения пикселей, которая называется также буфером кадра (frame buffer). Специальные примитивы вывода ЯГС предназначены для использования возможностей растровых устройств. Тем не менее растровые примитивы могут быть воспроизведены и на векторных устройствах, а векторные примитивы – на растровых устройствах. Текст можно выводить на устройствах обоих типов. Модуль аппаратуры или модуль математического обеспечения, называемый знакогенератором, разложит графическое описание литер на базовые элементы соответствующего устройства (отрезки или пиксели). Знакогенератор или генератор символов – функциональный блок, преобразующий представления литеры из числового кода в ее графическое изображение. Примитивы вывода и атрибуты Функциональный интерфейс графической системы предоставляет для построения изображения базовые элементы, называемые примитивами вывода. Вид примитива определяется его параметрами: геометрическим и визуальным представлениями на носителе станции. Эти характеристики задаются набором атрибутов, связанных с примитивом. Некоторые атрибуты могут быть различными для различных станций. Например, одна и та же линия на одной станции может выглядеть черной и пунктирной, а на другой – красной и сплошной. Подобные характеристики примитива, зависящие от представления на графической станции, называются зависимыми атрибутами. Ядро графической системы предоставляет функции создания примитивов и установки их атрибутов. Для определенных атрибутов прикладная программа может указать, должен ли данный атрибут (тип линии, цвет ломаной) задаваться зависимым от станции образом. Примитив вывода (Output primitive) – базовый графический элемент, который может использоваться для построения изображения. В ЯГС к примитивам вывода относятся: ломаная, полимаркер, текст, полигональная область, матрица ячеек и обобщенный примитив вывода. Атрибут – характеристика примитива вывода или сегмента, например, выделение, межлитерный просвет. В ЯГС некоторые свойства станции называют атрибутами станции. Примитивы вывода В ЯГС предусмотрено шесть примитивов вывода. Векторный примитив: ЛОМАНАЯ – ЯГС генерирует набор отрезков прямых, соединяющих заданную последовательность точек. Точечный примитив: ПОЛИМАРКЕР – ЯГС генерирует набор символов некоторого типа, которые центрируются в указанных точках. Эти символы называются маркерами и отмечают последовательность позиций знаками требуемой формы. Текстовый примитив: ТЕКСТ – ЯГС генерирует строку литер с началом в указанной позиции. Растровые примитивы: ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ – ЯГС генерирует многоугольник; область, которую он ограничивает, может быть пустой, иметь фоновую окраску, быть покрыта узором по шаблону или заштрихованной. МАТРИЦА ЯЧЕЕК – ЯГС генерирует матрицу прямоугольных ячеек, каждой из которых присвоен индивидуальный цвет. Этот примитив является обобщением матрицы пикселей растрового устройства. Тем не менее ячейки этого примитива не обязательно должны взаимно однозначно соответствовать аппаратным пикселям. Примитив общего назначения: ОБОБЩЕННЫЙ ПРИМИТИВ ВЫВОДА – с помощью этого примитива ЯГС предоставляет возможность использовать специфические средства графического вывода станции, например, такие как интерполяция кривых сплайнами, рисование дуг окружностей и эллипсов. Для этого задаются идентификатор нужного средства, набор геометрических позиций и, если требуются, дополнительные данные. Позиции подвергаются трансформационным преобразованиям ЯГС, но интерпретация их смысла оставляется на усмотрение рабочей станции. Термин интерполяция – нахождение по ряду данных значений функции промежуточных ее значений
Атрибуты примитивов вывода
В таблице для каждого примитива перечислены атрибуты, управляющие его визуальным представлением на носителе. Атрибуты описывают следующие характеристики примитивов вывода: Идентификатор указания – число, присваиваемое отдельным примитивам вывода внутри сегмента и возвращаемое устройством указания; один и тот же идентификатор может быть присвоен различным примитивам. Идентификаторы указания имеют смысл только при их совместном использовании с функциями ввода информации, описывающей сегмент, на который указал оператор. Тип линии – число, определяющее вид линии. Линия может быть сплошной, штриховая, штрихпунктирной, пунктирная, штрихпунктирная с двумя точками (см. ГОСТ 2.303-68 Линии). Ввод ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала... ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования... Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом... Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|