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

книги / Основы САПР. CAD CAM CAE

.pdf
Скачиваний:
12
Добавлен:
19.11.2023
Размер:
29.79 Mб
Скачать

52

Глава З. Основные концепции графического программирования

представить все неудобства, связанные с использованием команд драйвера низ­

кого уровня. Поэтому с графическими устройствами стали поставляться библио­ теки, получившие название графических (graphics libraries). Графическая библио­ тека, как, например, и математическая, представляет собой набор подпрограмм,

предназначенных для решения определенных задач. Конкретная подпрограмма

может изображать на экране прямую, круг или иной объект. Графическая биб­

лиотека основывается на командах драйвера устройства (рис. 3.2). Каждая под­

программа создается с использованием поддерживаемого набора команд драй­

вера. Например, подпрограмма, изображающая круг, может быть составлена из

отдельных команд драйвера, рисующих на экране точки или короткие отрезки.

Приложенив ~==;>~ Драйвер ~==;> Устройстваввода-вывода

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

 

 

Графическая

r--1 Драйвер

Ш

 

 

 

Приложенив

.......-1'-

.......-1'- Уст~ойство ввода-вывода

L.;m=::a;ama;;o;;;;;a;;Ш.......

,..,

библиотека

 

.......,..,.

!.......

,..,

 

 

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

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

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

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

собы вызова (входные и выходные аргументы) у каждой библиотеки свои. Это

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

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

нескольких библиотек.

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

аргументами и возможностями. (На практике каждая подпрограмма реализует­

ся разработчиками по-разному.) Тогда графические программы не требовали бЬI

изменения на уровне исходного кода даже при изменении графических уст­

ройств. Одним из примеров такого подхода является графическая система COR:E,

предложенная в 1977 г. группой SIGGRAPH (Special Interest Group on Computer Graphics) Ассоциации вычислительной техники (Association for Computing

MachineгyАСМ). Однако графическая система CORE не предоставляет дос­ таточного набора команд для использования всех возможностей растровых ус'f­

ройств, потому что эти устройства не были широко распространены во времена

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

53

разработки системы. Примерно в то же время Международная организация по стандартизации (International Standaгds OrganizationISO) разработала систе­ му графического ядра (Graphics Kernel SystemGKS). GKS считается стандар­ том в двухмерной графике, а позже эта система была расширена до GKS-3D

споддержкой трехмерной графики.

Иу CORE, и у GKS есть определенные недостатки в отношении динамическо­

го отображения и гибкого взаимодействия с пользователем. Поэтому организа­

ция ISO предложила еще один стандарт, получивший название Иерархическая

система программироваиия иитерактивиой графики (Programmer's Hierarchical Interactive Graphics System - PHIGS). Этот стандарт стал стандартом де факта

для большинства графических рабочих станций. Затем он был расширен и полу­ чил название «расширение PHIGS для х~ (PHIGS extension to Х - РЕХ), пото­

му что в него были включены функции работы с окнами системы Х window. Гра­

фические проrраммы, написанные на РЕХ, в сетевой среде могут использоваться

независимо от типа рабочей станции. Это достоинство было унаследовано от системы Х window, о которой будет коротко рассказано в конце главы. Коммер­ ческая графическая библиотека OpenGL развивалась независимо от организа­

ций по стандартизации, однако с течением времени она набирает все большую популярность благодаря гибкости в управлении рабочими станциями и переа­

нальными компьютерами в сетевой среде. OpenGL- расширение графической

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

тает статус графического стандарта де факта.

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

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

решить две основные задачи:

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

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

Для задания положения точек в пространстве и на мониторе используются сис­

темы координат. Важно понимать, как связаны между собой различные системы

координат. Особенно это важно для проектирования трехмерного объекта на

плоский экран. Проекция на экране строится по тем же законам, что и проекция

реального объекта на сетчатке человеческого глаза.

Первой среди систеl\1 координат мы рассмотрим cиcme~ty коордииат устройства (device coordinate system), которая определяет положение точки на экране. Эта система состоит из горизонтальной оси и и вертикальной оси v (рис. 3.3). Обра­

ппе внимание, что начало отсчета может выбираться произвольно. Осей и и v достаточно для задания положения любой точки экрана, поэтому третья ось,

перпендикулярная первым двум. не определяется. Положение любой точки зада­

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

1Silicon Graphics - компания, 11роизводящая графические рабочие станции, такие как

Indigo и 0 2•

54

Глава 3. Основные концепции графического программирования

ординат и точкой по осям и и v. Однако одна и та же точка может задаваться раз­

ными парами и и v в зависимости от положения начала координат, направления

осей и масштаба. Эти параметры для разных графических устройств устанавли­

ваются достаточно произвольно (см. рис. 3.3). Поэтому аппаратные координаты

в графической программе могут потребовать изменения при смене графического

устройства.

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

Виртуальиая система коордииат устройства ( virtиal device coordinate systeт)

позволяет избежать описанной выше проблемы. Виртуальная система координат

устройства фиксирует точку отсчета, направление и масштаб осей для всех рабо­

чих станций. Слово «виртуальный>> означает, что данная система отсчета суще­

ствует только в воображении программиста. Обычно начало отсчета располага­

ется в левом нижнем углу экрана, ось и откладывается вправо, а ось v - вверх.

Обе координаты могут изменяться в диапазоне от нуля до единицы. Точка, поло­ жение которой задается в виртуальной системе координат, на любом экране будет попадать в одно и то же место. Это дает программнету возможность едино­

образно определять формы, не заботясь о конкретных системах координат уст­

ройств. Графическая программа передает виртуальные координаты подпрограм­

ме драйвера устройства, которая преобразует их в координаты конкретного

устройства.

Виртуальная и обычная системы координат устройства позволяют задавать по­ ложение точки на плоском экране. Займемся теперь системами координат для

работы с трехмерным пространством. Основных трехмерных систем координат всего три: виешияя система коордииат (world coordinate systeт), система коорди­

иат модели (тodel coordinate systeт) и система коордииат иаблюдателя (viewing

coordinate systeт).

Виешияя, или мировая систе.ма коордииат (w01-td coordinate systeт), -это опор­

ная система, используемая для описания интересующего нас мира. Внешней она

является по отношению к объектам этого мира. Наnример, такая система может

исnользоваться для описания расnоложения и ориентации парт, стульев и доски,

если интересующий нас мир представляет собой класс.

Следующим шагом является описание формы каждого объекта мира. Форма

объекта определяется координатами всех или некоторых характеристических то­

чек объекта по отношению к системе координат, связанной с ним, - системой

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

55

координат модели (model coordinate system). Координаты точек объекта, опреде­ ленные таким образом, не изменяются даже тогда, когда объект перемещается

или вращается в пространстве. Они действительно зависят только от формы

объекта. Система координат модели перемещается вместе с тем объектом, к ко­ торому она привязана. Поэтому форма каждого объекта определяется в его соб­ ственной системе координат модели. Расположение и ориентация любого объек­

та ,задаются относительным положением и ориентацией модельной системы

координат данного объекта по отношению к внешней системе координат. Отно­

сительное расположение и ориентация систем координат определяются матри­

цей преобразования, о которой будет рассказано в разделе 3.7. Наличие внешней системы координат и модельных систем для всех объектов полностью определя­ ет мир, то есть расположение и форму всех объектов данного мира. Другими сло­ вами, применение матриц преобразования позволяет получить координаты лю­

бой точки любого объекта во внешней системе.

Следующий шаг - проектирование трехмерных объектов или их точек на мо­

нитор nодобно тому, как они проектируются на сетчатку человеческого глаза.

В компьютерной графике используется два вида проекций: перспектинная и па­

раллельная (рис. 3.4).

Yv

Точка

зрения

.... Центр

проекции

Точка

наблюдения

Xv

Yv

Xv

Экран

Рис. 3.4. Два вида проекций: а - перспективная; б- параллельная

Оба вида требуют задания двух точек: точки зрения и точки наблюдения. Точка зреиия (viewpoint) -это глаз наблюдателя. Точка наблюдения (viewsite)- это точ­

ка объекта, определяющая направление <<луча зрения>>. Вектор, проведенный от точки зрения к цели, задает направление наблюдения.

В перспективиой проекции (perspective projection) все точки рассматриваемого

объекта соединяются с центром проекции, который обычно лежит на линии,

соединяющей точку зрения и цель1• Точки пересечения этих линий с экраном

образуют проекцию. Экран располагается между точкой зрения и целью. В па­ раллелыюй проекциu (pamllel p1ujection) линии от всех точек объекта проводятся

в направлении наблюдателя параллельна направлению наблюдения, а точки пе­

ресечения этих линий с экраном формируют проекцию. Экран, как и в перспек­ тиnной проекции, располагается перпендикулярно направлению проектирова­

ния. Такая проекция называется ортогональной2

1 В nротивном случае лроекцня называется косоугольной.

1 В косоуrольноl\ проекции ориентация экрана лроизвольна.

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

57

 

 

Вид сбоку вдольХv

Zv

 

Точка наблюдения

Точкаэрен:и~я~====~==~~----

~;=========~zv

Точка зрения ~--------

~-!----------

~~Zv

Zv

 

Точка наблюдения

Вид сверху вдоль Yv

Рис. 3.6. Расчет проекции

Из подобия треугольников следует, что

Х5

s

(3.1)

=--Xv;

 

L-Zv

 

У5

s

(3.2)

=--Yv.

 

L-Zv

 

В формулах (3.1) и (3.2) Xs и Ys- расстояния до проекции выбранной точки. Расстояния измеряются в горизонтальном и вертикальном направлениях от точ­

ки, где ось Zv пересекается с экраном. Далее, L - расстояние между точкой на­

блюдения и центром проекции, а S - расстояние между центром проекции и эк­ раном. Формулы (3.1) и (3.2) показывают, что точка с большими значениями Zv

будет иметь большие значения Xs и У5, благодаря чему далекий отрезок кажется меньше, чем близкий той же длины. Расстояния Xs и Ys преобразуются в вирту­

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

жения и его размеров (на мониторе).

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

Как уже говорилось, системы координат связаны друг с другом матрицами пре­

образования. Так, положение и ориентация каждой из модельных систем коор­

динат по отношению к мировой задаются соответствующими матрицами преоб­

разований. Наблюдательская система координат также может быть определена относительно мировой при помощи матрицы преобразования, если задать поло­

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

ных в мировые при помощи матрицы преобразования, определяющей переход от

модели, к которой относится точка, к мировой системе координат. Эта операция

Соседние файлы в папке книги