Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции АПКР1

.pdf
Скачиваний:
21
Добавлен:
12.03.2015
Размер:
13.24 Mб
Скачать

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

Программисты предпочитают писать программы на языках высокого уровня. Графическое программирование не могло стать исключением, особенно если представить все неудобства, связанные с использованием команд драйвера низкого уровня. Поэтому с графическими устройствами стали поставляться библиотеки, получившие название графических (graphics libraries). Графическая библиотека, как, например, и математическая, представляет собой набор подпрограмм, предназначенных для решения определённых задач. Конкретная подпрограмма может изображать на экране прямую, круг или иной объект. Графическая библиотека основывается на командах драйвера устройства (рис. 4). Каждая подпрограмма создаётся с использованием поддерживаемого набора команд драйвера. Например, подпрограмма, изображающая круг, может быть составлена из отдельных команд драйвера, рисующих на экране точки или короткие отрезки.

Рис. 3. Непосредственное использование драйвера устройства.

Рис. 4. Использование графической библиотеки.

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

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

(Programmer's Hierarchical Interactive Graphics System – PHIGS ). Этот стандарт стал стандартом де факто для большинства графических рабочих станций. Затем он был расширен и получил название «расширение PHIGS для X» (PHIGS extension to X – PEX), потому что в него были включены функции работы с окнами системы X window. Графические программы, написанные на PEX, в сетевой среде могут использоваться независимо от типа рабочей станции. Графическая коммерческая библиотека OpenGL развивалась независимо от организаций по стандартизации, однако с течением времени она набирает всё большую популярность благодаря гибкости в

21

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

Системы координат.

Для вывода изображения объекта на экран графического устройства необходимо решить две основные задачи:

указать положение всех точек объекта в пространстве;

определить положение их образов на мониторе.

Для задания положения точек в пространстве и на мониторе используются системы координат. Важно понимать, как связаны между собой различные системы координат. Особенно это важно для проектирования трёхмерного объекта на плоский экран. Проекция на экране строится по тем же законам, что и проекция реального объекта на сетчатке человеческого глаза.

Рис. 5. Системы координат устройства.

Первой среди систем координат мы рассмотрим систему координат устройства (device coordinate system), которая определяет положение точки на экране. Эта система состоит из горизонтальной оси u и вертикальной оси v (рис. 5). Начало отсчёта может выбираться произвольно. Осей u и v достаточно для задания положения любой точки экрана, поэтому третья ось, перпендикулярная первым двум, не определяется. Положение любой точки задаётся двумя целыми числами u и v, равными числу пикселов между началом координат и точкой по осям u и v. Однако одна и та же точка может задаваться разными парами u и v в зависимости от положения начала координат, направления осей и масштаба. Эти параметры для разных графических устройств устанавливаются достаточно произвольно (см. рис. 5). Поэтому аппаратные координаты в графической программе могут потребовать изменения при смене графического устройства.

Виртуальная система координат устройства (virtual device coordinate system) позволяет избежать описанной выше проблемы. Виртуальная система координат устройства фиксирует точку отсчёта, направление и масштаб осей для всех рабочих станций. Слово «виртуальный» означает, что данная система отсчёта существует только в воображении программиста. Обычно начало отсчёта располагается в нижнем левом углу экрана, ось u откладывается вправо, а ось v – вверх. Обе координаты могут изменяться в диапазоне от нуля до единицы. Точка, положение которой задаётся в виртуальной системе координат, на любом экране будет попадать в одно и то же место. Это даёт программисту возможность единообразно определять формы, не заботясь о конкретных системах координат устройств. Графическая программа передаёт виртуальные координаты подпрограмме драйвера устройства, которая преобразует их в координаты конкретного устройства.

Виртуальная и обычная система координат устройства позволяет задавать положение точки на плоском экране. Займёмся теперь системами координат для работы с трёхмерным пространством. Основных трёхмерных систем координат всего три: внешняя система координат

(world coordinate system), система координат модели (model coordinate system) и система

22

координат наблюдателя (viewing coordinate system).

Внешняя, или мировая система координат (world coordinate system), - это опорная система,

используемая для описания интересующего нас мира. Внешней она является по отношению к объектам этого мира. Например, такая система может использоваться для описания расположения и ориентации парт, стульев и доски, если интересующий нас мир представляет собой класс.

Следующим шагом является описание формы каждого объекта мира. Форма объекта определяется координатами всех или некоторых характеристических точек объекта по отношению к системе координат, связанной с ним, - системой координат модели (model coordinate system). Координаты точек объекта, определённые таким образом, не изменяются даже тогда, когда объект перемещается или вращается в пространстве. Они действительно зависят только от формы объекта. Система координат модели перемещается вместе с тем объектом, к которому она привязана. Поэтому форма каждого объекта определяется в его собственной системе координат модели. Расположение и ориентация любого объекта задаются относительным положением и ориентацией модельной системы координат данного объекта по отношению к внешней системе координат. Наличие внешней системы координат и модельных систем для всех объектов полностью определяет мир, то есть расположение и форму всех объектов данного мира.

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

Рис. 6. Два вида проекций: а – перспективная, б – параллельная.

Оба вида требуют задания двух точек: точки зрения и точки наблюдения. Точка зрения (viewpoint) – это глаз наблюдателя. Точка наблюдения (viewsite) – это точка объекта, определяющая направление «луча зрения». Вектор, проведённый от точки зрения к цели, задаёт направление наблюдения.

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

Система координат xv yv zv (см. рис. 6) называется наблюдательской (viewing coordinate system), поскольку она облегчает расчёт проекции наблюдения. Наблюдательская система координат строится таким образом, чтобы обладать перечисленными ниже характеристиками. Начало координат этой системы располагается в рассматриваемой точке, ось zv направлена из начала координат в точку зрения, а ось yv параллельна вертикальной оси экрана (см. рис. 6). Третья ось, xv, определяется как векторное произведение первых двух. Положение точки зрения и точки

23

наблюдения задаётся в мировых координатах.

Взаимоотношения перечисленных выше систем координат иллюстрирует рис. 7.

Рис. 7. Соотношение систем координат.

Рис. 8. Преобразования между системами координат.

Примитивы.

Примитивы (primitives) – это элементы графики, которые могут отображаться графической библиотекой. В каждой библиотеке набор примитивов свой, поэтому мы рассмотрим только наиболее общие примитивы, поддерживаемые большинством графических библиотек.

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

24

чертежах и электрических схемах.

Также сюда можно отнести ещё одну базовую функцию, называемую ломанной линией (polyline), которая представляет собой набор соединённых друг с другом отрезков.

Рис. 9. Различные виды отрезков.

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

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

Рис. 10. Примеры различных заливок.

Маркеры обычно используются для выделения точек на графиках. Маркеры, доступные

вбольшинстве графических библиотек, показаны на рис. 11.

Рис. 11. Примеры маркеров.

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

25

текста любого вида необходимо задание таких параметров, как шрифт, отношение высоты к ширине и угол наклона букв, а также положение и направление строки текста.

Компоненты САПР

Для реализации компьютерно-ориентированного подхода к проектированию и производству, описанному ранее, нужно специальное аппаратное и программное обеспечение. Ключевым аспектом является интерактивное управление формой, поэтому неудивительно, что аппаратное и программное обеспечение для интерактивного манипулирования формами относится к числу основных компонентов, составляющих системы CAD/CAM/CAE. Графические устройства и периферийные устройства ввода-вывода вместе с обычным вычислительным модулем составляют аппаратное обеспечение систем CAD/CAM/CAE (рис. 12). Ключевыми программными компонентами являются пакеты, манипулирующие формами или анализирующие их под управлением пользователя в двух или в трех измерениях, одновременно обновляя базу данных. В последующих разделах эти аппаратные и программные компоненты рассматриваются подробно.

Рис. 12. Компоненты систем CAD/CAM/CAE.

1. Аппаратное обеспечение.

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

В состав графического устройства обычно входит одно или несколько устройств ввода. Помимо клавиатуры к ним относятся мышь, спейсбол1 и цифровой планшет с пером и роликом (рис. 13). Эти устройства ввода призваны способствовать интерактивному манипулированию формами, давая пользователю возможность вводить графические данные в компьютер непосредственно. Каждое графическое устройство обычно подключается к устройствам вывода, например к плоттеру или цветному лазерному принтеру (рис. 14). Эти устройства могут использоваться несколькими графическими устройствами совместно. Устройства вывода позволяют вывести любое изображение на бумагу.

1 Спейсбол отличается от трекбола количеством степеней свободы. У трекбола их всего две, а у спейсбола – шесть.

26

а

б

в

 

Рис. 13. Примеры устройств ввода: а – мышь, б –

графический планшет с пером и

 

мышью, в – спейсбол.

а

б

 

Рис. 14. Примеры устройств вывода: а – плоттер, б – цветной лазерный принтер.

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

1.1. Векторные графические устройства.

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

27

Рис. 15. Компоненты векторного графического устройства.

Дисплейный процессор считывает дисплейный файл (display list), который представляет собой последовательность передаваемых приложением кодов, соответствующих графическим командам. Дисплейный файл хранится в разделе памяти, который называется дисплейным буфером (display buffer). Дисплейный процессор осуществляет также загрузку дисплейного файла в дисплейный буфер. После этого дисплейный процессор формирует необходимые напряжения на вертикальных и горизонтальных парах отклоняющих пластин таким образом, что электрон, вылетающий с катода, попадает в нужное место внутренней поверхности передней стенки электронно-лучевой трубки (рис. 16). Это место соответствует одной точке создаваемого изображения. Внутренняя поверхность трубки покрыта люминофором, поэтому в той точке, куда попал электрон, возникает короткая вспышка света. Электронный пучок движется по экрану и формирует изображение в соответствии с командами дисплейного файла.

Рис. 16. Поперечный разрез электронно-лучевой трубки.

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

28

называется обновлением (refresh), которое обеспечивается повторяющимся считыванием дисплейного буфера сверху вниз и направлением электронного пучка в соответствии с командами из буфера. Дисплейный буфер используется исключительно для реализации обновления. В зависимости от сложности изображения перерисовка может занимать и более 1/30 с. Тогда часть изображения, построенная в начале цикла обновления, успеет исчезнуть, в то время как другая часть изображения еще будет прорисовываться. Возникнет эффект мерцания картинки в целом. Мерцание изображения и высокая стоимость – основные недостатки устройств векторной графики.

Есть у них и преимущества. Напряжения, подаваемые на вертикальные и горизонтальные отклоняющие пластины, можно контролировать с любой заданной точностью, что обеспечивает любое желаемое разрешение. Поэтому дисплейное устройство может иметь высокое разрешение (например, 4096x4096), а прямые линии получаются действительно прямыми, а не ступенчатыми. К тому же векторные устройства позволяют отображать динамическую анимацию. Динамика обеспечивается благодаря изменению содержимого дисплейного буфера по мере того, как дисплейный процессор занимается обновлением. Содержимое буфера изменяется графическими командами, передаваемыми управляющим приложением, в данном случае – программой анимации.

1.2. Растровые графические устройства.

Растровые графические устройства появились в середине 70-х гг. XX в. в результате широкого распространения телевизионных технологий. С тех пор они стали основным видом графических устройств благодаря высокому соотношению «качество – цена». Основные принципы их функционирования коротко можно описать следующим образом.

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

Рис. 17. Компоненты растрового графического устройства.

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

29

воспроизводя на нем картинку, хранящуюся в буфере. На внутренней поверхности электроннолучевой трубки может быть столько точек люминофора, сколько точек описывается буфером кадра. Электронный пучок направляется на точки, соответствующие точкам растрового изображения. Время свечения люминофора в растровых устройствах так же коротко, как и в векторных, поэтому необходимо регулярное обновление изображения. Единственное отличие – порядок движения электронного пучка при обновлении. Пучок пробегает по экрану слева направо, переходя со строки на строку в направлении сверху вниз (рис. 18). Когда электронный пучок направляется на точку люминофора, соответствующую точке изображения, он включается, возбуждая свечение люминофора. Время обновления остается постоянным независимо от сложности воспроизводимого изображения. Время обновления определяется, таким образом, временем сканирования всех строк развертки от верхней до нижней, и, как правило, составляет 1/30 с для обычных телевизоров или 1/60 с для качественных растровых графических устройств. Однако буфер кадра в растровых устройствах требует гораздо больше памяти, чем дисплейный буфер в векторных графических устройствах.

Рис. 18. Развёртка растрового изображения.

Растровое изображение в буфере кадра может содержать сведения о цвете, если каждой точке (пикселу) будет соответствовать не один бит, а несколько. Рассмотрим пример с тремя битами на каждый пиксел. Буфер кадра может быть представлен тремя плоскостями, каждая из которых содержит по одному биту для каждого пиксела. Говорят, что в таком случае буфер кадра содержит 3-битовые плоскости. В случае трехбитового представления цвета первый разряд может использоваться для включения или выключения красного, второй – зеленого, а третий – синего цвета. Так получается восемь цветов, которые могут быть одновременно выведены на экран графического устройства. В настоящее время доминируют графические устройства с 24-битовыми плоскостями (по восемь битов на каждый из основных цветов). В таких устройствах каждый цвет может иметь 256 градаций (28), а всего возможно одновременно отобразить 16 777 216 (224) цветов.

Точка монитора, соответствующая точке буфера кадра, будет светиться определенным цветом, как в обычном цветном телевизоре. Формирование цвета происходит следующим образом. Внутренняя поверхность трубки монитора покрыта люминофором трех разных типов. Люминофор первого типа светится красным, второго – синим, а третьего – зеленым. Точки люминофора расположены в вершинах равносторонних треугольников. Каждый треугольник соответствует одной точке в буфере кадров. Энергия электронного пучка, падающего на люминофор из пушки соответствующего цвета, пропорциональна аналоговому сигналу от ЦАП. Следовательно, интенсивность излучения определенного цвета также пропорциональна сигналу от ЦАП. Точки разных цветов расположены в вершинах треугольника, но для человека они сливаются воедино и образуют цвет, задаваемый значением, хранящимся в .буфере кадра. Электронный пучок может попадать и на люминофор другого цвета. Например, пушка, предназначенная для красного люминофора, может попасть пучком на зеленый люминофор. Для предотвращения этого эффекта перед слоем люминофора помещается теневая маска (shadow mask). Теневая маска гарантирует, что электронные пучки попадают только на

30