Начальный период создания и развития средств машинной графики характеризовался развитием многочисленных, иногда достаточно эффективных, графических систем, ориентированных на то или иное оборудование [1,]. Фактически этот период можно охарактеризовать как период основного внимания к техническим средствам [2]. Программное обеспечение рассматривалось, как удачно заметил Гантер [18], чем-то вроде "верхнего слоя краски на аппаратуре".
В следующий период более актуальной стала проблема создания программного обеспечения. Во-первых, велись разработки алгоритмов машинной графики - генерация примитивных элементов, интерполяция, аппроксимация, формы и методы представления изображений и т.д.; во-вторых, создавались инструментальные средства машинной графики - графические языки, пакеты процедур, языки диалога.
Постепенно сформировалось представление о программном продукте как о промышленном изделии, что выдвинуло проблему стандартизации графического программного обеспечения. Развитие сетей ЭВМ, оснащенных терминальными устройствами различных типов, потребовало обеспечить независимость программного обеспечения от аппаратуры.
Первые результаты по стандартизации были получены применительно к сети ARPA в рамках работ по разработке протоколов для аппаратно и машинно-независимого представления графических данных в сети [116].
Модель работы пользователя в сети с применением графического протокола [116] приведена на рис. 0.3.18.
В начале сеанса работы пользователь располагается перед дисплеем, подключенным к терминальной ЭВМ, инициирует терминальную программу и устанавливает связь с ЭВМ сети, на которой ему будет предоставлено необходимое обслуживание. Прикладная программа главной ЭВМ при необходимости выполнить ввод/вывод использует обслуживающую программу, функцией которой является интерфейс прикладной программы с сетевым графическим протоколом.
Терминальная программа используется для интерпретации протокола в подходящую аппаратно-зависимую форму и для реализации функций ввода и запроса к обстановке.
Данные в сети передаются только в стандартной форме, следовательно, на передающей стороне выполняется кодирование, а на приемной - декодирование информации. Предусмотрено два уровня протокола вывода: сегментированный и структурированный форматы. В сегментированном формате изображение строится из отдельных сегментов, представляющих собой список графических примитивов (точек, линий, строк текста). ТП выполняет только перекодировку и может быть достаточно простой. В структурированном формате изображение строится из вызовов отдельных подкартин, состоящих из примитивов и вызовов других подкартин. Объем передаваемых данных уменьшается, но на ТМ, как правило, требуется программное выполнение преобразований.
Для работы с виртуальными устройствами ввода, служащими для выполнения позиционирования, ввода скалярного значения, ввода состояния кнопки (вкл/выкл), ввода строки символов, ввода времени, используется два метода: 1) запроса и получения состояния устройства ввода, например, строки символов; 2) разрешения пользователю совершить действия, приводящие к возникновению события ввода и получения на главной ЭВМ "сообщения" события.
Аппаратная независимость обеспечивается средствами опроса, котоpый позволяет выяснить конфигурацию и возможности используемых устройств. Адаптация к возможностям реализуется необходимыми настройками прикладной и обслуживающей программ.
После публикации [116] появился целый ряд работ, посвященных использованию идей протокола в нашей стране [4,,,].
Работы по протоколам послужили отправной точкой по развитию стандартизации в машинной графике. В 1974 г. в США был создан комитет по стандартизации машинной графики GSPC в АСМ/SIGGRAPH. В 1975 г. в ФРГ в Институте стандартов был создан подкомитет по машинной графике - DIN-NI/UA-5.9. В 1977 г. в международной организации по стандартизации (ISO) была создана рабочая группа TC97/SC5/WG2 "машинная графика" [70].
Важную роль в разработке методологии стандартизации машинной графики сыграла конференция в Сейлаке (Франция), организованная графическим подкомитетом WG 5.2 IFIP в 1976 г. На конференции были сформулированы и обсуждены основные условия и проблемы стандартизации. Было установлено, что основная цель стандартизации - переносимость графических систем, которая достигается стандартизацией интерфейса между графическим ядром системы (базовой графической системой), реализующим собственно графические функции, и моделирующей системой - проблемно-ориентированной прикладной программой, использующей функции графического ядра. Базовая система должна обладать: независимостью от вычислительных систем; независимостью от языков программирования; независимостью от области применения; независимостью от графических устройств.
Структура прикладной графической системы, удовлетворяющей сформулированным требованиям, может быть представлена в виде шестиуровневой модели (рис. 0.3.19).
Процесс преобразования информации при выполнении вывода может быть представлен состоящим из следующих этапов (рис. 0.3.20):
1. Модельные преобразования. Проблемно-ориентированный уровень из геометрических моделей отдельных объектов, задаваемых в собственных локальных системах координат, формирует описание совокупного объекта в некоторой единой (мировой) системе координат. Описание совокупного объекта подается в графическую систему.
2. Нормализующие преобразования. Графическая система переводит описание из мировой, вообще говоря произвольной, системы координат в т.н. нормализованные координаты устройства, имеющие фиксированные пределы изменения координат, например, от 0.0 до 1.0.
3. Преобразования сегментов. Если графическая система предоставляет средства манипулирования отдельными подкартинами изображения (часто именуемыми сегментами), например, для независимого размещения отдельных самостоятельных частей изображения, то могут потребоваться такие преобразования.
4. Видовые преобразования. В случае 3D описания изображения и 2D устройства вывода необходимо выполнить проецирование изображения на заданную картинную плоскость. Наоборот, при 2D сцене и 3D устройстве вывода необходимо выполнить преобразование, связанное с размещением изображения. При выполнении этих преобразований, естественно, может потребоваться выполнение отсечения частей изображения. После этого этапа по сути дела готово описание изображения в некоторой аппаратно-независимой форме, пригодной для вывода на любое устройство.
5. Преобразование рабочей станции. Для выполнения вывода на конкретное устройство необходимо преобразование данных из аппаратно-независимой формы в координаты устройства.
Процесс преобразования координатной информации при вводе от координатных устройств обратен вышеописанному преобразованию при выводе.
Концептуальная модель переносимой графической системы показана на рис. 0.3.21. Штриховые линии на нем обозначают интерфейсы, при стандартизации которых может быть обеспечена переносимость.
Верхний уровень стандартизации - IGES предназначен для обеспечения мобильности компонент САПР.
Средний уровень стандартизации - уровень базового графического пакета (GKS) определяется выбором базовых функций системы. Этот интерфейс делает базовую графическую систему независимой от области применения.
Нижний уровень стандартизации - уровень связи с виртуальным графическим устройством (CGI) зависит от выбора примитивов ввода/вывода, являющихся абстракцией возможностей устройств. Этот интерфейс делает базовую графическую систему аппаратно-независимой.
Независимость от вычислительных систем и языков программирования обеспечивается соответствующей дисциплиной программирования и взаимодействия с системами программирования.
Главными организациями формирующими международные стандарты в области информационной технологии являются ISO (International Organization for Standartization) и IEC (International Electrotechnical Commission). В конце 1987 г. был сформирован первый совместный технический комитет (JTC1) ISO/IEC с целью стандартизации в области информационной технологии. Стандартизацией в машинной графике занимается 24-й подкомитет (ISO/IEC JTC1/SC24). В 1988 г. была создана постоянная советская часть этого подкомитета. Основными стандартами являются [68]:
1. GKS (Graphical Kernel System) - набор базовых функций для 2D аппаратно-независимой машинной графики.
2. GKS-3D (Graphical Kernel System for 3 Dimensions) - расширение GKS для поддержки базовых функций в 3D.
3. PHIGS (Programmer's Hierarchical Interactive Graphics System) - набор базовых функций 3D графики аналогичный GKS-3D, но в отличие от GKS-3D, ориентированной на непосредственный вывод графических примитивов, группируемых в сегменты, графическая информация накапливается в иерархической структуре данных. В целом PHIGS ориентирован на приложения, требующие быстрой модификации графических данных, описывающих геометрию объектов.
4. Языковые интерфейсы (Language bindings) - представление функций и типов данных функциональных графических стандартов в стандартизованных языках программирования.
5. CGM (Computer Graphics Metafile) - аппаратно-независимый формат обмена графической информацией. Используется для передачи и запоминания информации, описывающей изображения.
6. CGI (Computer Graphics Interafce) - набор базовых элементов для управления и обмена данными между аппаратно-независимым и аппаратно-зависимым уровнями графической системы.
7. CGRM (Computer Graphics Reference Model) - модель стандартов в машинной графике, которая определяет концепции и взаимосоотношения применительно к будущим стандартам в машинной графике.
8. Регистрация - механизм регистрации стандартизуемых аспектов примитивов вывода, обобщенных примитивов, escape-функций (для доступа к аппаратным возможностям устройств) и других графических элементов.
9. Тестирование реализаций на соответствие графическим стандартам - основные цели этого проекта: специфицирование характеристик стандартизованных тестов, используемых для определения соответствия реализаций графическим стандартам, и выработка предписаний разработчикам функциональных стандартов относительно правил соответствия.
В составе 24-го подкомитета имеется 5 рабочих групп (WG):
WG1: Архитектура. Цель этой группы - развитие CGRM - модели стандартов машинной графики.
WG2: Интерфейсы прикладных программ. Стандартизация функциональных спецификаций для интерфейсов прикладных программ.
WG3: Метафайлы и интерфейсы с устройствами. Стандартизация обмена графической информацией, включая метафайл и интерфейс с устройствами.
WG4: Языковые интерфейсы. Стандартизация языковых интерфейсов для функциональных стандартов машинной графики.
WG5: Верификация, тестирование и регистрация. Разрабатывает методы и процедуры проверки соответствия и тестирования реализаций функциональных стандартов машинной графики и методов и процедур регистрации графических примитивов.
Из рис. 0.3.21 видно, что для обеспечения мобильности программного обеспечения требуется стандартизовать:
· базовую графическую систему, т.е. стандартизовать
графический интерфейс (набор базовых графических функций) -
Core System, GKS, GKS-3D, PMIG, PHIGS, PHIGS+ и т.д.
· графический протокол (порядок и правила обмена
информацией) - IGES, CGM и др.
Далее будут рассмотрены графические интерфейсы, являющиеся международными графическими стандартами, а затем - графические протоколы, среди которых большая часть - стандарты де-факто и только один - CGM - международный стандарт.
Существенным этапом в области стандартизации машинной графики явилась публикация проекта стандарта CORE-SYSTEM (GSPC-77) [118], модель которой приведена на рис. 0.3.22. Главные идеи, положенные в основу системы CORE [118,]: разделение функций ввода и вывода; минимизация отличий между выводом на графопостроитель и интерактивный дисплей; концепция двух координатных систем - мировой системы координат, в которой конструируется выдаваемое изображение, и приборной системы координат, в которой представляются данные для отображения; концепция дисплейного файла, содержащего приборную координатную информацию; понятие дисплейного файла сегментов, каждый из которых может независимо модифицироваться как элемент; обеспечение функций преобразования данных из мировой системы координат в приборную путем вызова видового преобразования.
В системе выделены следующие группы функций: вывода; сегментирования дисплейного файла; установления и опроса атрибутов примитивов (цвет, яркость, ширина линии и т.д.) и атрибутов сегментов (тип, видимость, указуемость и т.д.); визуализации; выполнения ввода с виртуальных устройств ввода типа указка, клавиатура, кнопка, локатор, датчик; управления и доступа к специальным аппаратным возможностям.
В 1979 г. был опубликован уточненный проект стандарта CORE-SYSTEM (GSPC-79) [119]. Кроме прочих изменений, в этой версии предусмотрена (весьма ограниченно) поддержка растровых устройств. Всего предлагалось 266 функций, так что охватывался широкий спектр применения машинной графики, начиная от пассивного вывода до интерактивных систем высокого уровня.
Ясно, что для многих приложений требуется лишь часть возможностей графпакета, все остальные, если будут присутствовать, будут приводить к неэффективности прикладной программы. Для устранения этого противоречия система разбита на три не зависящие друг от друга группы уровней - группа уровней вывода, группа уровней ввода, группа уровней размерности. Уровни внутри группы совместимы снизу-вверх.
Группа уровней вывода включает в себя:
· базовый вывод, поддерживающий полный набор примитивов
вывода, их атрибутов и операций визуализации и предназначенный для
приложений, не требующих выборочного редактирования изображений;
· буферизованный вывод дополнительно к предыдущему уровню
позволяет использовать сохраняемые сегменты без преобразования
образа - преобразования графической информации, содержащейся в
сегменте в момент выполнения вывода.
Группа уровней ввода включает:
· без ввода, т.е. применяется для пассивных приложений;
· синхронный ввод - ввод производится синхронно с работой
прикладной программы, т.е. ее исполнение приостанавливается до
завершения ввода;
· асинхронный ввод - ввод производится независимо от
работы прикладной программы, а вводимые оператором данные
накапливаются в обрабатываемой прикладной программой очереди
ввода.
На последних двух уровнях поддерживаются виртуальные устройства ввода классов ЛОКАТОР, ШТРИХ, ДАТЧИК, ВЫБОР, УКАЗКА и КЛАВИАТУРА.
Группа уровней размерности включает:
· 2D - поддерживаются только 2D операции;
· 3D - дополнительно к 2D поддерживаются и 3D операции.
Предложения GSPC получили широкий отклик в виде многочисленных реализаций версий базовой системы [7,,,,].
Результатом работ в ФРГ было создание системы GKS. Модель графической системы, положенная в ее основу, приведена на рис. 0.3.23. В 1979 г. GKS была принята в качестве отправной точки международного стандарта. В процессе разработки международного стандарта в исходную версию GKS был внесен целый ряд изменений, приблизивших ее к CORE-SYSTEM, но сохранивших ряд отличительных фундаментальных концепций. Основной из таких отличительных черт является введение понятия рабочей станции, представляющей собой абстракцию совокупности виртуальных устройств ввода/вывода, более полно соответствующей современной тенденции использования интеллектуальных терминалов.
По максимуму рабочая станция обладает следующими свойствами: имеет одну адресуемую поверхность вывода с фиксированным разрешением; допускается только прямоугольное поле отображения, которое не может состоять из нескольких отдельных частей; позволяет задание и использование поля отображения, которое меньше максимально возможного, с гарантией того, что изображение не генерируется вне заданного поля отображения; поддерживает несколько типов линий, шрифтов текста, размеров символов и т.д. для вывода примитивов с различными атрибутами; имеет одно или больше устройств ввода для каждого класса устройств, которые независимо друг от друга могут работать в одном из трех режимов - синхронный ввод, опрос, асинхронный ввод; запоминает сегменты и обеспечивает средства для изменений сегментов и манипуляций с ними.
Ясно, что выделение рабочей станции излишне громоздко, когда приходится иметь дело с одним устройством вывода и ввода. Основная ценность введения понятия рабочей станции состоит в удобной и естественной возможности разделения аппаратно-независимой и аппаратно-зависимой частей.
Следует отметить, что в GKS столь же последовательно проводится разделение функций ввода/вывода, как и в CORE.
Набор примитивов GKS подобен набору примитивов CORE, хотя меньше и несколько более приспособлен для целей растровой графики (ломаная; полимаркер; текст; многоугольник, который может быть "залит" одним цветом, заштрихован, покрыт узором, либо может быть не закрашен за исключением границ; массив прямоугольных ячеек, закрашенных одним цветом; обобщенный примитив черчения, дающий доступ к специальным геометрическим и графическим возможностям устройств).
В отличие от CORE в GKS нет понятия текущей позиции, так что построение примитива не зависит от предыстории вычерчивания. В GKS имеется 2 способа задания атрибутов примитивов. Первый - индивидуальный способ аналогичен используемому в CORE, не зависит от рабочей станции и основан на индивидуальном задании атрибутов, которые сохраняют свое значение пока не будут изменены прикладной программой. Второй - групповой способ зависит от рабочей станции и основан на задании независимых групп значений атрибутов. Для использования требуемой группы атрибутов задается ее номер, который сохраняет свое значение пока не будет переустановлен.
Видовые операции, определяющие переход от входных (мировых) координат к физическим координатам устройства, также похожи, но в GKS, в отличие от CORE, допускается наличие не одной, а нескольких пар окно/поле вывода.
Средства сегментации GKS напоминают средства сегментации CORE, но в GKS добавлены средства манипулирования сегментами на заданной рабочей станции и средства работы с рабочей станцией специального типа - приборно-независимым хранилищем сегментов (ПНХС).
Виртуальные устройства ввода также подобны, хотя названия несколько отличаются и в GKS правила работы с устройствами лучше проработаны.
Для повышения эффективности конкретных приложений в GKS, аналогично CORE, предусмотрено разбиение на уровни. Предлагается три уровня вывода и три уровня всех остальных функций.
Уровни вывода:
0: Минимальный вывод. Доступны все примитивы. Используются только групповые, немодифицируемые атрибуты примитивов. В каждый момент времени активна только одна рабочая станция вывода. Опросы параметров системы - только базовые. Доступно чтение пикселов - отдельных точек изображения из растровых устройств.
1: Базовая сегментация с полным выводом. Все возможности уровня 0. Полное управление рабочей станцией. Полные возможности вывода. Полные возможности групповых таблиц атрибутов. Одновременно могут быть активными несколько рабочих станций. Есть рабочие станции типа метафайл для сохранения/воспроизведения изображений. Может использоваться требуемое число пар окно/поле вывода. Есть базовая сегментация (без ПНХС). Доступны требуемые опросы.
2: Приборно-независимое хранилище сегментов. Все возможности уровня 1. Имеется ПНХС.
Уровни ввода:
A: Нет ввода.
B: Синхронный ввод. Существуют виртуальные устройства ввода каждого класса, работающие в режиме синхронного ввода (request).
C: Полный ввод. Все возможности ввода уровня B. Предусмотрены режимы асинхронного ввода и ввода по опросу (event и sample).
В 1985 г. GKS была принята в качестве международного стандарта [86]. В 1988 г. для стандартизованных языков программирования были приняты международные стандарты на интерфейс GKS c языками Fortran, Pascal, Ada, C [89].
Отличия GKS-3D от GKS заключаются в добавлении 3D функций:
· примитивов 3D вывода;
· установки атрибутов вывода (2 функции);
· поддержки 3D преобразований (9 функций);
· работы с 3D сегментами и преобразований 2D сегментов в 3D и наоборот (4 функции);
· ввода с 3D координатных устройств (10 функций);
· утилит работы с матрицами 3D преобразований (2 функции).
В целом GKS может рассматриваться как подмножество GKS-3D, т.е. 2D приложения, написанные на GKS, гарантированно исполняются в 3D окружении без каких-либо изменений.
В 1988 г. GKS-3D была принята в качестве международного стандарта [90]. В период с 1988 по 1990 гг. прорабатывались проекты стандартов ISO 8806 на интерфейсы GKS-3D с языками программирования. В 1991 г. завершилось их принятие в качестве международных стандартов [91].
Во многих приложениях возникает необходимость геометрического моделирования трехмерных тел (САПР машиностроительного, строительного, архитектурного и других направлений, системы автоматизации научных исследований, системы визуализации и т.д.).
Использование GKS или GKS-3D для отображения результатов моделирования предполагает, что моделирование целиком должна выполнять прикладная программа, так как эти системы ориентированы на прямой ввод/вывод и в них не предусмотрено иного манипулирования графическими данными кроме накопления в сегментах.
PHIGS [68,,,,] же комбинирует графику с техникой моделирования и представляет собой набор функций программирования графики с поддержкой быстрой модификации графических данных, описывающих геометрические соотношения объектов.
Набор примитивов вывода и их атрибутов в PHIGS тот же самый, что и в GKS-3D с добавлением примитива "annotation text relative" для пометки объектов.
Принципиальное отличие PHIGS от GKS состоит в том, что в PHIGS создание и отображение изображения разделены на две независимых фазы - занесения в централизованную структурную память (CSS - Centralized Structure Store) и отображения заданной структуры на требуемую рабочую станцию.
Структура состоит из графических и неграфических элементов. Поддерживаются возможности создания и редактирования структур в CSS. Структура может вызывать другие структуры за счет чего создаются иерархии. Предусмотрено 9 классов структурных элементов:
примитивы вывода; | спецификация атрибута; |
локальное преобразование моделирования; | редактирование; |
обобщенный структурный элемент; | прикладные данные; |
глобальное преобразование моделирования; | управление; |
отсечение. |
Графический вывод задается в т.н. модельных координатах. Элемент "локальное преобразование моделирования" задает преобразование, которое применяется к последующим примитивам вывода.
Элемент "редактирование" определяет метку, используемую при редактировании и несущественную при отображении. Предоставлены возможности поиска метки и установки на нее указателя.
"Обобщенный структурный элемент" позволяет определить нестандартные действия.
Элемент "прикладные данные" несущественен при отображении. Обычно представляет собой указатель на прикладную базу данных.
Основное отличие между системами PHIGS и GKS-3D заключается в наличии элемента "Исполнить структуру" (Execute Structure), позволяющего при отображении исполнить структуру как часть другой. Когда такой элемент принимается интерпретатором, то текущее состояние упрятывается и управление переключается на структуру, заданную в элементе. После завершения интерпретации вызванной структуры восстанавливается исходное состояние и интерпретация продолжается с элемента, следующего за элементом "Исполнить структуру".
При вызове структуры она наследует глобальное модельное преобразование вызвавшей структуры. Даже если при исполнении вызванной структуры глобальное модельное преобразование будет изменено с помощью соответствующих функций, тем не менее по возврату исходное глобальное преобразование будет восстановлено.
Локальное модельное преобразование, комбинируясь с глобальным, формирует текущее модельное преобразование.
В PHIGS может быть отредактирован отдельный графический элемент структуры, что обеспечивает большую скорость модификации изображения по сравнению с GKS, в которой, как минимум, требуется перегенерация сегмента, содержащего изменяемый примитив.
PHIGS - 3D система, хотя ряд функций позволяет работать в 2D. При этом все функции преобразуются в эквивалентные 3D вызовы.
В отличие от ряда подобных систем, все координатные системы в PHIGS - правые координатные системы с возрастанием координаты по оси Z при движении по направлению к наблюдателю.
При интерпретации структуры из ее элементов генерируются примитивы вывода с использованием текущего модельного преобразования. Координаты сгенерированных примитивов вывода заданы в мировой системе координат (World Coordinates - WC).
Отображение в PHIGS выполняется в две стадии. На первой, называемой View Orientation (ориентация отображения), координатная система изменяется к необходимой для отображения выводимого объекта. На второй стадии, называемой View Mapping (преобразование отображения), объект преобразуется в аппаратно-независимые нормализованные координаты устройства, готовые для вывода на каждой открытой рабочей станции. Проецирование выполняется на этой стадии.
View Orientaion изменяет мировую систему координат к системе координат точки наблюдения (View Reference Coordinate system - VRC). Суть состоит в переносе начала координат в точку фактического наблюдения объекта и с направлением осей согласно требуемой проекции.
View Mapping более сложна и зависит от выбранного типа проекции - "параллельной" или "перспективной". При параллельной проекции объем видимости определяется как параллелепипед преобразуемый в порт проекции, который представляет собой прямоугольный параллелепипед в нормализованных координатах проекции с ребрами параллельными осям. При перспективной проекции объем видимости - конус.
Для каждого типа проекции плоскость проекции - окно, определяемое X-Y размерами параллелепипеда или конуса. Плоскость проекции перпендикулярна Z-оси. Для параллельных проекций угол, который образуют проекторы с плоскостью проекции, определяется точкой центра проекции (Projection Reference Point - PRP). Проекторы параллельны линии из PRP в центр окна на плоскости проекции. При перспективной проекции все проекторы проходят через PRP.
Не требуется, чтобы точка проецирования (PRP) лежала на оси Z. В общем случае все типы проекций могут быть получены путем ориентации объекта относительно VRC осей и посредством размещения PRP относительно VRC-осей и плоскости проекции.
Для многих применений требуется одновременное наличие нескольких видов объекта. В PHIGS возможно определение множества видов одного или различных объектов. Для каждого вида SET VIEW REPRESENTATION (установить представление вида) задает как он будет показан на требуемой рабочей станции. Отсечение производится для создания части пространства нормазизованных координат проекции (Normalized Projection Coordinates - NPC), потенциально видимой на рабочей станции для этого вида.
Преобразования окно/порт рабочей станции близки к GKS в определении расположения пространства нормализованных координат проекции на рабочей станции и в одинаковости коэффициентов масштабирования вдоль направлений X и Y.
PHIGS+ [94,,] - расширение PHIGS, имеющее дополнительные функциональные возможности для приложений, требующих учета освещенности, раскраски (интерполяции цветов по поверхности), а также дополнительные возможности по управлению отображением и новые примитивы для поддержки эффективного описания сложных поверхностей. Эти расширения были сформулированы как поправка к существующим частям 1-3 стандарта PHIGS и введением новой части 4 стандарта.
Поддержка освещенности и раскраски основана на предоставлении средств задания позиции источника света и наличии примитивов "с данными", задающими вектора нормалей и цвета вершин.
Предоставлена возможность задания в структуре "ограничивающего бокса". Когда он обрабатывается, то устанавливаются флаги отсечения (если ограничивающий бокс полностью вне области вывода) и отбраковки (если ограничивающий бокс меньше заданного размера). Этот дополнительный элемент структуры предназначен для управления пропуском исполнения структуры, образ котрой находится вне области вывода, и позволяет повысить скорость отображения.
Это стандарт ISO [66] на интерфейс между аппаратно-независимой частью графического программного обеспечения (базисной графической системой) и аппаратно-зависимой (драйверами). Этот интерфейс ранее (в рамках ANSI) назывался интерфейсом виртуального устройства.
Для эффективного использования аппаратных возможностей современных
графических устройств набор функций CGI перекрывает
аппаратно-реализуемые возможности и включает в себя
следующие функции:
· управление устройством,
· вывод графических примитивов,
· изменение графических атрибутов,
· сегментация изображений,
· графический ввод,
· растровые операции.
Отличительными особенностями CGI (по сравнению со стандартами на интерфейс базисной графической системы) являются следующие: расширенный набор графических примитивов, одноступенчатое преобразование координат, увеличенное количество логических устройств ввода, наличие растровых операций. В целом набор функций CGI достаточно удобен для создания надстроенного над ним графического программного обеспечения. Последнее позволяет эффективно создавать на основе CGI различные базисные графические системы.
Следует отметить, что стандарт на интерфейс виртуального устройства ориентирован в первую очередь на унификацию способа взаимодействия с различными графическими устройствами и предназначен для системных, но не прикладных программистов. Он был утвержден после появления множества проектов по стандартизации программных интерфейсов базисной графической системы.
Анализ применяемых в настоящее время графических протоколов и проектов по их стандартизации позволяет выделить протоколы следующих типов:
· аппаратно-зависимые графические протоколы или команды
графических устройств,
· аппаратно-независимые графические протоколы или метафайлы,
· прикладные графические протоколы,
· растровые графические файлы.
Аппаратно-зависимые графические протоколы разрабатываются фирмами, производящими графическое оборудование. Они представляют собой последовательность команд для построения изображений на устройствах выпускаемых данной фирмой. Для интерпретации таких протоколов не требуется дополнительных ресурсов если используется соответствующее устройство. Поэтому, такие протоколы могут успешно применяться в распределенных системах при отсутствии локальной ЭВМ.
Вопрос о поддержке тех или иных аппаратно-зависимых графических
протоколов определяется составом используемого оборудования.
Целесообразно, чтобы центральная ЭВМ обеспечивала возможность
генерации команд для наиболее распространенных графических устройств.
В настоящее время значительная часть производящейся в мире графической
аппаратуры работает с протоколами TEKTRONIX, REGIS и HPGL. Поддержка
этих протоколов обеспечивается также в наиболее распространенных
зарубежных программных продуктах.
Разработан одноименной фирмой, выпускающей графические дисплеи. Ввиду широкой распространенности устройств этой фирмы другие разработчики графической аппаратуры часто обеспечивают режим совместимости с TEKTRONIX'ом в своих устройствах. Поддержка этого протокола производится также в некоторых эмуляторах терминала (например, VTERM, ST240, TEEMTALK) работающих на персональных компьютерах типа IBM PC.
Существуют две разновидности протокола TEKTRONIX, соответствующие
дисплеям серии 4010/12/14 и дисплеям серий 41ХХ, 42ХХ, 43ХХ. Дисплеи
4010/12/14 это дисплеи на запоминающей трубке с минимальным набором
графических команд. Дисплеи серии 41ХХ и выше это цветные растровые
дисплеи, работающие с более развитым графическим протоколом,
который предусматривает следующие основные группы графических команд:
· команды построения векторных примитивов,
· команды работы с растровыми изображениями,
· команды управления сегментацией изображения,
· команды задания цветовых и геометрических атрибутов,
· команды графического ввода,
· команды управления плоскостями вывода,
· команды выполнения видовых преобразований,
· команды определения символов (графических образов).
Кроме перечисленных графических функций протоколы серии TEKTRONIX 41XX и старше включают множество функций управления алфавитно-цифровым режимом, каналом передачи данных и дополнительными внешними устройствами (hardcopy, планшет, диск).
Для представления команд используется символьное кодирование с использованием служебных символов в имени команды (чаще всего - символа Esc), что затрудняет чтение операторов человеком.
Разработан для дисплеев серии VT (240 и выше). С этим протоколом работают также персональные компьютеры фирмы LabTam и ряд графопостроителей различных фирм. Поддержка протокола REGIS обеспечивается в некоторых эмуляторах терминала на IBM PC (VTERM, ST240). По функциональным возможностям протокол REGIS заметно уступает протоколу TEKTRONIXа. В частности, в нем гораздо беднее набор растровых операций, задания атрибутов построений, средств графического ввода и управления плоскостями вывода, полностью отсутствуют возможности сегментации изображения, выполнения видовых преобразований, определения символов.
Графический протокол HP-GL (язык описания данных Graphic Language) разработан фирмой Hewlett Packard в 1976 г. и поддерживается множеством других фирм, выпускающих графопостроители. В настоящее время используется версия HP-GL/2. Операторы языка содержат символьное имя команды и несколько параметров, также подготовленных в печатном текстовом виде. Всего в языке 88 операторов, разбитых на 9 функциональных групп. Ядро языка содержит 5 групп из 55 операторов, которые должны поддерживаться на всех устройствах. Оставшиеся 3 группы из 33 операторов являются специфичными для некоторых из устройств. В целом, благодаря использованию явного текстового представления, язык легко читается и интерпретируется.
Любая страница может быть описана как просто пиксельный массив, но это практически неприемлемо. Язык описания страниц должен описывать любой текст и графику на высоком уровне в терминах абстрактных графических элементов.
Выполнение вывода с использованием языка описания страниц идет в две стадии:
1. Приложение генерирует аппаратно-независимое описание на языке описания страниц.
2. Программа, управляющая некоторым растровым устройством вывода, интерпретирует описание и отображение его на устройство.
Эти две стадии могут быть выполнены в разное время и в разных местах.
Примитивы вывода выдаются на растровое устройство вывода процессом, называемым преобразованием сканирования (растеризация).
Особое место среди графических языков высокого уровня занимает интерпретируемый язык описания страниц PostScript [109,], разработанный фирмой Adobe и используемый не только для описания и построения изображений, но и качестве высокоуровневого аппаратно-независимого протокола обмена между компонующей и отображающей системами.
В первую очередь PostScript - это общий язык программирования с встроенными мощными графическими примитивами. С другой стороны, это язык описания страниц, который включает возможности языка программирования, и используется для связи с электронными печатающими устройствами.
На PostScript'е можно описывать любые графические формы, двухуровневые изображения и печатаемые формы. Для построения изображений (в том числе и всевозможных шрифтов) в языке PostScript предоставляется возможность управления каждой точкой печатающего устройства.
Естественно, что вследствие наглядности PostScript, как и другие языки программирования неоптимален в смысле минимальности кодирования информации. Поэтому его использование в качестве графического протокола представляется нецелесообразным. Однако он становится незаменим при передаче тексто-графических документов, предназначенных для воспроизведения на печатающих устройствах с высоким разрешением (например, лазерных принтерах).
Аппаратная независимость достигается тем, что построение изображения ведется в пользовательской системе координат с помощью обычных графических примитивов и описание изображения не содержит никакой информации об устройстве отображения.
В языке предусмотрен ряд типов данных - числа, строки, одномерные массивы, словари (таблицы, задающие соответствие между ключом и значением). Элементы массивов могут быть различных типов. Примитивы управления включают в себя условия, циклы и процедуры, которые могут вызываться рекурсивно.
Операторы (арифметические, логические, графические и управления) записываются в постфиксной записи и манипулируют со стеком типа LIFO.
В язык встроены следующие изобразительные возможности:
· изображения строятся из отрезков линий, дуг и кубических кривых;
· примитивы могут быть выведены линиями требуемого вида,
закрашены любым цветом или использоваться для задания
области отсечения для других графических элементов;
· текст полностью интегрирован с графикой, символы как
стандартных шрифтов, так и определенных пользователем,
рассматриваются как графические образы, которые
обрабатываются графическими операторами языка;
· 2D общая координатная система поддерживает обычные линейные
преобразования и их комбинации (сдвиг, поворот,
масштабирование, отражение и т.д.);
· как построенные графическими операторами, так и естественные
изображения, введенные, например, со сканера, могут иметь
требуемые разрешение и динамический диапазон.
PostScript стал стандартом "де-факто" и получил чрезвычайно широкое распространение как язык описания страниц для лазерных принтеров и других устройств с высоким разрешением, его интерпретаторы входят в состав контроллеров растровых принтеров многих типов.
Языки описания страниц, близкие по возможностям к PostScript, разработаны также фирмами Xerox (язык Interpress) и Imagen (язык DDL).
На основе расширения языка PostScript фирмой Sun Microsystems разработана система NEWS [105] (the Network extensible Window System) для управления окнами в сети.
Несколько версий языка описания страниц Printer Communication Language (PCL) было разработано фирмой Hewlett-Packard для вывода на лазерный принтер рисунков и текстов с использованием различных шрифтов. В версии PCL5 имеется 64 оператора, разбитых на 10 функциональных групп. Все операторы начинаются с символа Esc (шестнадцатиричный код 01BH) и содержат один или несколько последующих символов. Символьное кодирование, используемое в PCL, менее приспособлено для чтения человеком, чем явное текстовое кодирование, используемое в языке PostScript, но значительно компактнее последнего.
Аппаратно-независимый графический протокол или метафайл представляют собой процедурное описание изображения в функциях виртуального графического устройства. Он обеспечивает возможность запоминать графическую информацию единым образом, передавать ее между различными графическими системами (в том числе работающими на различных ЭВМ) и интерпретировать информацию для вывода на различные графические устройства. Для интерпретации метафайла требуется локальная ЭВМ, выполняющая эмуляцию не реализованных в аппаратуре функций и кодирование в команды конкретных устройств.
В настоящее время в мировой практике наиболее активно
поддерживаются стандартизованные аппаратно-независимые протоколы
NAPLPS, GKSM, CGM и WMF - стандарт де-факто фирмы Microsoft на метафайл.
Это американский стандарт на представление графических данных в сетях VIDEOTEX (имеется также европейский аналог этого стандарта - SET). Основными требованиями при разработке этого протокола были следующие:
· возможность передачи графической информации в потоке
буквенно-цифровых данных,
· минимальность объема передаваемых графических данных,
· минимальность усилий для интерпретации и возможность
вывода изображений на простейшие графические устройства.
Обеспечение этих требований привело к тому, что был разработан эффективный способ упаковки графической информации в 7-ми или 8-битные коды ASCII. Эти же требования привели к ограничению функциональных возможностей протокола, что не позволяет получить высокое качество изображений при использовании современных графических устройств.
Это de-facto стандарт на графический метафайл в рамках базисной графической системы GKS (приложение Е к стандарту GKS). По функциональным возможностям этот протокол полностью соответствует системе GKS со всеми ее достоинствами и недостатками. Поэтому, он легко интерпретируется в системах, соответствующих стандарту GKS.
Недостатком GKSM-протокола (равно как и системы GKS) является, например, минимальный набор стандартизованных графических примитивов (их всего 5), что не дает возможности эффективного использования современных интеллектуальных графических устройств и увеличивает объем передаваемой информации. Возможность же использования обобщенного графического примитива или ESCAPE-механизма (предназначенных для нестандартных функций) не обеспечивает однозначность интерпретации графических данных при передаче их между различными системами.
Кодирование в GKSM текстовое, что позволяет читать (просматривать, редактировать) метафайл но требует большего объема чем символьное кодирование применяемое в NAPLPS или CGM.
Это стандарт ISO [88] на графический метафайл. Функционально этот протокол соответствует стандарту на интерфейс виртуального устройства CGI (Computer Graphics Interface), предназначенного для обеспечения связи различных графических систем с различным графическим оборудованием и являющегося обобщением текущего уровня развития графического программного и аппаратного обеспечения. По этой причине протокол CGM может совмещаться с различными программными системами и позволяет наиболее эффективно использовать возможности имеющихся графических устройств.
В CGM предусмотрены три способа кодирования - символьное, двоичное и текстовое. Символьное кодирование (по идеологии близкое к принятому в NAPLPS) достаточно компактно и предназначено для хранения и транспортировки графической информации. Двоичное кодирование требует минимальных усилий по генерации и интерпретации и предназначено для внутрисистемного использования. Текстовое кодирование наиболее наглядно и обеспечивает возможность визуального просмотра и редактирования графических файлов. При необходимости в рамках графической системы могут быть предусмотрены соответствующие перекодировщики.
Это формат графических файлов с которыми работает система AutoCad. Его следовало бы отнести к категории аппаратно-зависимых протоколов, но (в настоящее время) нет ни одного устройства понимающего этот формат. Использование этого формата целесообразно в том случае, когда есть необходимость использования графических возможностей системы Autocad.
В системе Windows фирмы Microsoft для сохранения и последующего
использования цветных изображений используется свой формат метафайла.
В WMF используется единственный способ кодирования - двоичный,
который, как это отмечалось выше, наиболее компактен и обеспечивает
наибольшие скорости упаковки и воспроизведения, но неудобен
для просмотра и анализа человеком.
Метафайл содержит заголовок и собственно описание изображения
в виде записей GDI (Graphical Device Interface) функций.
Всего предусмотрено три варианта метафайла -
стандартный, размещаемый (placeable) и буферный (clipboard).
Отличия вариантов состоят только в разных структурах заголовков.
В составе Windows предусмотрены функции для создания и проигрывания
метафайлов и манипулирования ими.
Перечисленные аппаратно-независимые графические протоколы ограничиваются 2-мерными графическими примитивами, что не позволяет использовать ресурсы локальной ЭВМ для сокращения объема передаваемой информации при работе с 3D изображениями. Поэтому, представляется целесообразной разработка двухуровневого графического протокола согласованного с CGM и обеспечивающего возможность передачи 3D объектов. Сокращение нагрузки на линию связи будет происходить в данном случае не только за счет повышения семантической насыщенности передаваемой информации, но и за счет возможности получения на локальной ЭВМ множества изображений с различными параметрами визуализации (например, множество изображений пространственного объекта с различных точек зрения).
Прикладные графические протоколы это объектно - ориентированные
протоколы передачи данных между прикладными системами. Они наиболее
компактны (вследствие высокой семантической насыщенности), допускают
свободу в выборе различных способов графического представления, но
требуют большей мощности локальной ЭВМ для интерпретации. Прикладные
протоколы стандартизованы пока только для САПР машиностроения и
электроники. В качестве примеров можно привести следующие стандарты:
· IGES (Initial Graphics Exchange Specification),
· STEP (STandard for the Exchange Product Model Data),
· MAP (Manufacturing Automation Protocol),
· VDAFS (Sculptured Surface Interface),
· EDIF (Electronic Design Interchange Format).
Основные трудности, связанные с разработкой протоколов этого уровня, состоят в том, что во многих областях применения до сих пор не унифицированы основные объекты (в том числе графические) и операции над ними. Для работы в этом направлении потребуются объединенные усилия проблемных специалистов, математиков и системных программистов в области баз данных, машинной графики, телекоммуникаций и т.д.
С появлением и широким распространением персональных ЭВМ, использующих
растровые дисплеи и устройства документирования (лазерные и струйные
принтеры и т.д.), для целей компактного хранения и транспортировки
графической информации стали активно применяться различного рода
растровые графические файлы. Используется более десятка различных
типов растровых графических файлов.
К наиболее известным относятся:
· TIFF (Tag Image File Format),
· GIF (Graphics Interchange Format),
· PIC,
· PCX,
· MAC (MacPaint),
· BMP (Bitmap).
Разработан корпорациями Aldus и Microsoft совместно с некоторыми фирмами, производящими сканеры и принтеры. Этот формат поддерживается целым рядом систем подготовки документации и является наиболее реальным претендентом на стандарт для хранения и транспортировки растровых изображений.
Основной концепцией формата TIFF является цветовая модель
изображения. Под этим понимается набор характеристик изображения,
определяющих способ представления цвета. Стандартизованы следующие
цветовые модели:
· двух-уровневое изображение (bi-level image);
· монохромное изображение (gray-scale image);
· индексированное цветное изображение (paletted color image);
· полное цветное изображение (full RGB image).
TIFF является открытым форматом и позволяет создать любую модель изображения. Естественно, что выбор требуемой модели определяется решаемой задачей. Например, двух-уровневая модель наиболее удобна в системах подготовки документации. Индексированное цветное изображение совместимо с форматом хранения графической информации в наиболее распространенных в настоящее время растровых графических дисплеях.
Помимо информации о модели изображения формат TIFF содержит метрические характеристики, а именно: размеры изображения, плотность (количество пикселов на единицу длины), с которой создавалось изображение. Эти характеристики особенно полезны в системах подготовки документации. TIFF не накладывает практически никаких ограничений на параметры изображения. Так, например размеры изображения могут достигать 4 миллиардов. Количество битов на пиксел ограничено этим же числом.
Формат TIFF позволяет хранить в одном файле любое количество изображений. Кроме того, есть возможность хранить несколько копий одного изображения с различными характеристиками. Так, например, можно иметь несколько вариантов изображения, отличающихся различной плотностью, что полезно опять же в издательских системах для работы с несколькими принтерами.
В формате TIFF имеется возможность упаковывать изображение различными методами. В том числе изображение может храниться и в неупакованном виде, что представляется удобным, так как, например, при создании изображения важен произвольный доступ к любому элементу изображения за достаточно малое время. Одним из методов кодирования является LZW (Lempel, Ziv & Welch), который дает высокий коэффициент сжатия.
Разработан в CompuServe Incorporation для хранения и транспортировки растровых изображений. GIF позволяет содержать в одном файле несколько изображений, не связанных между собой.
По сравнению с форматом TIFF он более прост. В GIF используется наиболее распространенная модель изображения - индексированное цветное изображение. Хотя это не мешает хранить в нем изображения двух-уровневой и монохромной моделей. Это реализуется путем соответствующей настройки таблицы цветности. Модель полноцветного изображения с хранением для каждого пиксела компонент R, G и B принципиально не вписывается в формат GIF, так как существует ограничение на количество битов в пикселе - 8.
Достоинством формата GIF является наличие стандартизованного протокола передачи GIF-изображения по линии связи. Формат GIF, в отличие от TIFF, организован по принципу последовательного доступа. Т.е. он не содержит оглавлений или каких-либо ссылок внутри себя. Это делает его удобным при передаче изображений в распределенной графической системе.
GIF использует единственный метод кодирования изображений - LZW. Это свойство следует отнести к недостаткам формата, так как использование одного метода кодирования ограничивает область его применения. Кроме того, следует отметить, что не существует графических редакторов, понимающих формат GIF.
Формат распространен на IBM PC и используется в графических редакторах (Paintbrush, EgaPaint) и системах подготовки документации (Ventura Deck Top Publisher, First Publisher).
В PCX используется очень неэффективный метод кодирования, он дает низкий коэффициент сжатия. Однако время, используемое на кодирование/декодирование практически равно времени кодирования без всякой упаковки. Это дает преимущества при использовании этого формата в интерактивных системах с быстрой сменой изображений.
Является основным форматом в системах подготовки документации и графических редакторах на персональных компьютерах фирмы Apple (Macintosh, Lisa).
Является одним из основных форматов представления растровых изображений в системе Windows. Файл имеет достаточно простую структуру и сохраняет единственное изображение с одним, четырьмя, восемью и двадцатью четырьмя битами на пиксел. Одно-, четырех- и восьмибитное представления соответствуют индексированному цветному изображению. Для таких изображений в заголовке BMP-файла хранится таблица цветности. Изображение может быть сжато с использованием кодированием длин серий для четырех- и восьмибитных изображений.
Наряду с перечисленными имеется еще ряд форматов для хранения растровых файлов, используемых в отдельных системах, но не получивших широкого распространения. Их применение может оказаться целесообразным в случае использования соответствующих систем.
В отличие от большинства других предложений по стандартизации, таких как, например, GKS, система Х спроектирована и реализована небольшой группой разработчиков из Массачусетского технологического института в рамках проекта Athena, спонсорами которого были фирмы DEC и IBM.
Система Х - программное окружение для программистов и пользователей прикладного программного обеспечения инженерных рабочих станций и представляет собой целостную систему, в рамках которой синтезированы предложения по управлению окнами, функциональному и языковому интерфейсам, аппаратно-независимому протоколу и программному обеспечению рабочей станции.
Основой Х является "базовая оконная система". Полное Х-окружение надстроено над ней в виде уровней (рис. 0.3.24).
Базовая оконная система взаимодействует с окружающим миром только через сетевой интерфейс. Какого-либо специального привилегированного доступа к ней не предусмотрено.
Архитектура Х-системы базируется на модели клиент-сервер (рис. 0.3.25). Клиент - прикладная программа. Сервер - программа, вызванная на компьютере, к которому физически подключен дисплей. В ней сосредоточена вся аппаратная зависимость.
Основные критерии, которыми руководствовались в разработке Х-системы:
· транспортабельность - система должна быть применима к
различным дисплеям;
· аппаратная независимость приложений;
· сетевая прозрачность - приложения могут быть вызваны как
локально, так и на удаленных ЭВМ без каких-либо их изменений и без
необходимости информирования об отличиях. Должны быть поддержаны
различные сетевые протоколы;
· конкурирующие приложения - дисплей может делиться между
несколькими приложениями. Возможен вывод из нескольких приложений
как в единственное, так и в несколько окон;
· интерфейсы с приложениями и управление окнами - Х не
предписывает какого либо одного способа работы с окнами, например,
только перекрывающимися;
· перекрытия окон - ввод/вывод должны быть возможны для полностью или частично затененных окон.
Одно из основных отличительных свойств Х-системы - работа одного сервера с несколькими клиентами и наоборот одного клиента с несколькими серверами представляется весьма удобным и естественным. Подобный подход использовался, например, в системах ДИГРАФ.К и ДИГРАФ.Р [13].
Другое же основополагающее положение, что за перечерчивание окон, получивших экспозицию на экране, несет ответственность прикладная программа, приводит к необходимости иметь высокоскоростные каналы связи (например, Ethernet). Другими словами, за сравнительно малые результаты приходится платить несуразно высокую цену. Представляется целесообразным иметь управление окнами на терминальной ЭВМ, возможно и с какими-либо прагматическими ограничениями на возможности такой локальной системы управления окнами.
В машинной графике широко распространилось понимание необходимости стандартизации, которая позволяет обеспечить переносимость пакетов прикладных программ, унифицировать графические методы работы, углубить их понимание и практического использования, ставить задачи перед разработчиками аппаратуры.
В настоящее время работы по стандартизации, в основном, сосредоточены на узком фронте специфицирования некоторого минимального набора "базисных" функций с одновременным стремлением к многофункциональности пакетов графических подпрограмм. Следует ожидать, что дальнейшее продвижение стандартизации будет идти по пути повышения ее функционального уровня в определенных, сформировавшихся областях приложений.
В целом, текущее состояние работ по стандартизации машинной графики - необходимый, но пока первый шаг в этой части создающейся на наших глазах индустрии программного обеспечения [21].
Наряду с положительными аспектами стандартизации следует отметить и определенные минусы, имеющие общий характер.
1. Стандартизация всегда означает затверждение некоторого определенного уровня достижений и понимания, тем самым в определенной степени тормозится развитие новых, нестандартных технических средств и программного обеспечения. Особенно, если учесть то, что первой строчкой наших стандартов является: "несоблюдение стандарта преследуется по закону".
2. Стремление покрыть широкий спектр применений, начиная от пассивного вывода до высокоинтерактивных приложений, несмотря на наличие уровней, все-таки приводит к громоздкости и набора средств, и структуры данных и, естественно, программного кода.
3. Стремление к легкой адаптируемости влечет за собой чрезвычайно большое количество средств запроса к обстановке (в GKS - 75 функций из общего числа 185, т.е. более 40%). Такое количество несомненно избыточно для многих конкретных приложений. Не случайно поэтому, например, еще в 1987 г. темой одной из дискуссий на Всесоюзной школе-семинаре по "Информатике и интерактивной компьютерной графике" (Цахкадзор, 16-20 марта 1987 г.) было: "Стандартизация - закон или методология, тормоз или ускорение".
Важно отметить, что в предложениях по стандартизации наряду со стремлением к многофункциональности пакетов очевидно и стремление к минимизации набора стандартизованных примитивных функций, что, вообще говоря, неверно для конкретной области приложений. В последнем случае повышение функционального уровня стандартизации обеспечит как легкость изучения, так и легкость адаптации, которая важна ведь не вообще, а в каждом случае в некотором конкретном классе приложений. Практика написания прикладных систем показывает, что для повышения эффективности прикладных программ требуется набор различных функциональных возможностей из различных, предлагаемых стандартами уровней.
В этой связи, интересным представляется решение, предложенное в [32], положенное в основу графпакета АТОМ. Система машинной графики представляется в виде совокупности пяти сравнительно слабо связанных подмножеств: средств формирования изображений; средств промежуточного хранения информации; средств ввода; средств преобразований изображений; средств управления графическими устройствами.
Требуемая конфигурация графической системы собирается из отдельных модулей, объединяемых в конвейер [34]. Конвейер собирается либо статически - на этапе проектирования программы, либо динамически, в процессе ее исполнения. Передача данных в конвейере осуществляется через единый межмодульный интерфейс.
Дело в том, что в его постановке и выводах произведена подмена, аналогичная подмене в школьной шуточной задачке на сообразительность, в которой спрашивается:
- Cколько яблок на березе, если на одной ветке их 5, на другой ветке - 10 и так далее
При этом внимание учеников намеренно отвлекается от того основополагающего факта, что на березе яблоки не растут, в принципе.
В эксперименте Майкельсона ставится вопрос о движении эфира относительно покоящегося в лабораторной системе интерферометра. Однако, если мы ищем эфир, как базовую материю, из которой состоит всё вещество интерферометра, лаборатории, да и Земли в целом, то, естественно, эфир тоже будет неподвижен, так как земное вещество есть всего навсего определенным образом структурированный эфир, и никак не может двигаться относительно самого себя.
Удивительно, что этот цирковой трюк овладел на 120 лет умами физиков на полном серьезе, хотя его прототипы есть в сказках-небылицах всех народов всех времен, включая барона Мюнхаузена, вытащившего себя за волосы из болота, и призванных показать детям возможные жульничества и тем защитить их во взрослой жизни. Подробнее читайте в FAQ по эфирной физике.