Основы САПР (CAD,CAM,CAE) - (Кунву Ли)(2004) (951262), страница 12
Текст из файла (страница 12)
Наконец, координаты в наблюдательской системе координат преобразуются в значения Хз и Уз по формулам (3.1) и (3.2), а затем— в виртуальные координаты устройства. Эта операция (рис. 3.8) называется преобразованием проекции (ргоуесйоп стоп(оттагюп). Наконец, виртуальные координаты устройства преобразуются в обычные подпрограммой драйвера. Результат ' показан на рис. 3.8.
Рис. 3.3. Преобразования между системами координат Все эти преобразования обычно выполняются внутри графической библ а программисту приходится только указывать сведения, необходимые для дения преобразований. Например, трансляции и повороты объектов учи ся при преобразовании модели, положение точки зрения, точки наблюд вектора вертикали — при преобразовании наблюдения, а тип проекции, р жение центра проекции и экрана — при преобразовании проецирования.
нотекй, прОвет тываютения и асполоОд1щко графические библиотеки примитивного уровня могут потребовать от программиста самостоятельного написания кода лля всех этих преобразований. Подробнее мы расскажем об этом в разделе 3.7. 3.3. Окно и видовой экран Термин окно (кеЫоы) в сетевой компьютерной среде обозначает область экрана монитора рабочей станции, посредством которого пользователь взаимодействует с вычислительными ресурсами, подключенными к той же сети. В компьютерной графике этот термин имеет иное значение.
Окно — это область пространства, просцнруемая на монитор. Объекты, находящиеся вне окна, на мониторе не появляются. В этом смысле оно подобно окну дома, через которое человеку, сидящему внутри дома, видна лишь часть внешнего мира. Вероятно, эта аналогия.-.: была основанием для выбора соответствующего термина. Окно обыч>ю опреде-' .,- лЯетсЯ как пРЯмоУгольник, лежащий на экРане и заданный значенилми Хп и У, -С в системе координат просмотра (рис. 3.9 и рис. 3.10). Внлимая облаСть пространства, называемая просиаглривиемим обьемом (лентий тю1ите), зависит от типа .'- -.
проекции. Для параллельной проекции эта область имеет форму параллелепипеда. а для перспективной — форму пирамиды. Рис. 3.9. Окно и просматриваемыи обьем для параллельной проекции Просматриваемый объем при проектировании может давать довольно слояоюв'.'.,'.:- изображенис, поскольку в него могут попадать ненужные объекты, расположен-:: '"' ные вблизи наблюдателя или вдали от него. Иногда бывает удобно ограничить."' этот объем двумя плоскостями, из которых одна располагается ближе, а дру'' ', ння Просматриваемый объем Рис.
3.12. Видовые экРаны центр проекции ° ' Точка арены П Рио. 3.11. Ближняя н дальняя плоскости 3.4. Примитивы Я ' ' ДаЛЬт])ст (РИС 'йт1г1) .ДПЯ ПаРаЛЛЕЛЬНОй ПРС/ВДСЦЙИ бЛИЖНЯЯ И ДаЛЬНЯЯ ПЛО- ости определнютсЯ так':зке, как и для перспективной. Рис. 3.10. Окно н просматриваемый объем для перспективной проекции 'дават] экран (агата/раг/) — это область экрана, где будет отображаться проеци'емое изображение (рис.
3.12). В эту область проецируется просматриваемый тьем, определяемый «обычным» окном. Отображение состоит из трансляции и стшг'абнрования, учитывающих расстояние между центром видового экрана и ттгтром монитора, а также разницу размеров окна и видового экрана. другими зовами, значения Лт н Уя полученные по формулам (3.1) и (3.2), должны быть личены или уменыпены таким образом, чтобы центр окна попадал в центр адового экрана, а не в центр мотгтттора Кроме того, они должны быть подверг'ты масштабированию, чтобы четыре граничные точки окна стали четырьмя нгтчг~ыми точками видового экрана.
Соотношение сторон у окна должно быть ттм жс, как н у видового акрана, в противном случае изображение будет иска- 'но и круг, например, превратится в эллипс. Ниже приведен пример кода, задающего окно и видовой экран с использованием графической библиотеки ОрепО1 В Орепб[. окно просмотра также определяется как трехмерный объем. Однако результат получается таким, как если бы третье измерение окна просмотра просто игнорировалось.
втаатс Оюп1 чтеырогсО - (О. О, 400, 400); /* Видовой экран задается координатами окна'. Первый и второй аргуненты определяют полажение левого нижнего угла окна просмотра, а третий и четвертый — разнер пряноугольника. */ зсастс 6 с1аюреб г)ербй галде[] = (0.0 1.0); /* Первый и второй аргуиенты представляют собой поправки и иинииапьнону и наксииагюнону значенняи. которые иогут храниться в бубере глубины.
*/ зсастс 6[баас)е юентпц ча1аюеО - (-100.0, 100 О. -100.0. 100.0. -10 О. 100 0): /* Горизонтальный и вертикапьнын разиеры окна задаются в координатах прасиотра [аргументы 1-4). Пятыи и вестой аргуненты определяют расстояние от экрана до ближней и дальней плоскостей соответственна. */ 010гснотчтьлпд чо!аюе[0]. чтеытпд чо1ыже[ 1]. чтентпд ча)ыже[2]. чтентпд ча1ыже[3], чтеытпд чо!оке[4]. чтент'пд чо1цм[5]): /* Определяет ткп проекции - параллельный — и создает иатрицу ортогри)ического параллельного прссиатриваемого сбьена гюсле чего унножает на него текуаую иатрицу */ ц)чтеьрагс(ч~еирагт[0] юеирогт[Н, чтеырогс[3], чтенрогт[3).
/* Определяет прянаугольник окна. открытого диспет~ером. после чего отображает в эта окно готовое изобаржение. Если ц1щеырогс не используется. окно просмотра по унолчанию считается совпадакюии со всем открытын окнон. */ 010ертбйапде(берса галде[0].берФ гапце[1]): /* Определяет кодирование г.координат при преобразовании просмотра Значения з-координаты масюгабкруются этой конандай так. чтобы они лежали в опредепеннон диапазоне.
*/ ]Уриягилгивы (ргэлгггтез) — это элементы графики, которые могут отображаться графической библиотекой. В каждой библиотеке набор примитивов свой, поэто- му в данном разделе мы рассмотрим только наиболее общие примитивы, поддер- живаемые болыиинством графических библиотек. ' Эта «окно» означает область монитора, через которую пользователь взаимодействует с компьютером. Окно открывается н обрабатываетсн диспетчером операционной системы (например„клиентом Х тч(пг(очч нли М(става[с ЪЪ'1пг(птчэ). I* Координаты концов о~резкое лоианой. *l 9)ведзп(ВЕ Е!НЕ ЕООР) 9)уе51ехЗВУ(йрозпт[01[01); 91 УеггехЗОУ (ароз не[ Ц [01); Рис.
3.13. Различные виды отрезков Рис. 3.14. Примеры различных залнеок Х, У, л, Х, ув Лз Х„У„хм орепд[ ВЕОоць)е розит[)[31 - 1 (О,О, О.О. 0.0). 110.0. 20.0, 15 О).. 11.0. 3.0. 6.5)): Для отображеийя' о)лрйзкгг щзяиой (ливии — Йпе) необходимо задание координат двух его концов. В большинстве графических библиотек координаты концов могут задаваться в трехмериом пространстве; проецирование на плоскость экрана осуществляется автоматически. Можно указывать атрибуты отрезка: тип, толщииу, цвет и другие. Типы отрезков, поддерживаемых большинством графических библиотек, изображены иа рис.
3.13. Для систем автоматизироваииой разработки чертежей поддержка этих типов линий совершенно необходима, поскольку оии часто используются в маши>(остроительных и архитектурных чертежах и электрических схемах. В библиотеках СКЯ, РН1СВ и ОрепС одной из базовых функций является лов(алая (ро[у[)ле), представляющая собой набор соедииеииых друг с другом отрезков. Координаты копцов отрезков, составляющих ломаную, задаются в виде матрицы, В случае ломаной, состоящей всего из одного отрезка, в матрицу помещаются координаты двух его концов.
Примеры использования функций построения ломаной из библиотек РН1СБ и ОрепС1 приведены ниже. РН105 Р(пг пцю ОГ 001п15 = 10. г* Количество точек в поианои. *( РРош13 ро п13[) = ( 10.0. 0.0. 0.0) (10.0. 20 О. 15.0).. (1.0. 3 О. 6.5)); (* Координаты концов отрезков гоманай *! Рро)у1(пеЗ(пцю от ро(п1з, розп13); (* Рисует заданную ломаную. *( 91Уег(ехЗОУ(дротп([91[0) ): 91[ос(): (* Настроение гоманой по заданным точкам ( 1О вт ) *I 3.4.2. МйтвиГви)гв йй(йвае14К Многоугопьт(их — это то же самое, что и ломаная, за небольшим исключеиием:, первая и последняя строки матршп ( вершии ) Р] лолжиы быть одинаковыми (со- '); ответствующие им точки совпадают).
Того же результата можно было бы дос- -,.':. тичь и с использованием фуикции постросиия ломаной, однако миогоугольипк„, . построенный при помощи спсциальиой функции, распознается системой как.„ч объект, имеющий внутреннюю и внешнюю части. Внутренняя площадь мною- ": угольиика может быть заполнена штриховкой различных видов (рис. 3.14). Атрибутами многоугольника могут быть цвет впутреиией области (цвет запело,,.' исиия), а также тип, ширина и цвет ломаной, ограничивающей эту область. Хотя.':: функция построения многоугольников может использоваться и для пост роеиия',-( кругов и прямоугольников, в большинстве графических библиотек сув(ествувт'. специальные функции, требующие гораздо меньше входных параметров (иапри-: мер, цситр и радиус круга илп два коица диагонали прямоугольника).
Тем ие ме-.".,. исс внутри библиотек ати функции реализованы через фуикцию построения''; лшогоугольииков. 3.4.3. МаркеР Миркеры обычно используются для выделения точек иа графиках. Маркеры','.". доступные в болыпиистве графических библиотек, показаны иа рис. 3.15. Тпп маркера указывается в качестве атрибута. Полимаркер, как и отрезок, явля " ' ется стандартным объектом в СКБ и РН1С5. ОрепС1.
ие поддерживает маркеры':. -'. явно, однако предоставляет мехаипзм сохранения маркеров в растровых файлазг,; и выведеиия их иа экран. Благоларя атому графическая программа, построеиивя, "':... па ОрспС[., гораздо лучше переносится иа различные платформы Приведеииь(й б ниже образец кода демонстрирует выведение лшркера * (звездочка) в РН1СВ',: и Орел С1.. ® + * О х ООп пе Рыо.
8.16. Примеры маркеров РК!65 ртпт пцю ат роют - !О: !* Количество ядр]еров лпя отобрахения */ прото[3 ро1п[3[1 - ( (О О, 0.0. 0 О). ([О О, 2О.О. !5.0). (!.О, З.О. 8.5П . /* Координаты маркеров. */ рве( ювгдег туре(РИК 5ТАЙ): l* Тий маркера — звездочка. */ рро1ущвгйегЗ(пцю от розит. Ро(п(3): /* Построение нвркеров по иневщинся дан~ ни. */ ОрепЯ. 6[ноуте азтегтзк[!3] - (Охоо. Охоо, ОхЗО Ох!8 Охос. Охос, Охос Охос Охос Охос Охос. Ох!8.