Основы САПР (CAD,CAM,CAE) - (Кунву Ли)(2004) (951262), страница 13
Текст из файла (страница 13)
ОхЗО) /* Задание рвстрового изображения звездочки. Первой рисуется нижняя строка. затеи следующая н т, д */ и е зе( ытбтп - 8; /* Ширина растра в пикселвх. *! Сьзтзе~ Ьетдот -- )3: /* Высоте растра в пиксепвх. *! 6И1овт агтдтп х —. 0.0. опдтп у = 0.0: /* Задание ьвчагв отсчета систеиы координат растра. Попожитепьные знвчения сиещвют начет~о отсчета вверх и вправо. отрицательные — вниз и влево. */ 6[(1овт тпсге х = 10 О, тпсге у = 0 0: !* Поправки к положению растре после выведения.
*/ СИ1овт ыЬ те[3] -- (!.О, 1 0 1 0): /* Задание света маркера. "! СС(1овт роз!шаг[2! = (20.5 20 5). !* Координаты неркеров *) 01Р(хе15тогет(6[ ОМРАСК А).[6МИЕМ1.1); !* Установке режиме хранения пиксепов. влияняега нв работу д18нюар. */ ОТСо1огЗ[ы(Моте) /* установке белого цвета нвркерв */ д)пазтегроз2(ч(розтттсп): !* Уствновка текуцего положения растра. */ д)отьтюр(нтдть Ьетдпт.
спели х. огтд(п у, тгсге х тпсге у, азтегтзк): /* Выводит растровую картинку. заданную в постеднеи вртуненте. представляющем собой указатель нв зту картинку Положение н рвзнер растра указыввются первыии четырьня артуиентаии *l 3.4.4. Текст Большинство графических библиотек поддерживают два вила текста: текст для пояснений (экранный или двумерный текст) и трехмерный текст.
Текст для пояснений всегда располагается в плоскости экрана, поэтому его форма не искажа- 1 Метал задания растровых изображений излагается н книге (121). стев:вне зависимости от угла, на который он повернутй Трехмернь)й текст может быть расположен на любой плоскости в трехмерном пространстве. Его'положе- .
ние и ориентация задаются в мировых координатах. Для текста любого вида необходимо задание таких параметров, как шрифт, отношение высоты к ширине и угол наклона букв, а также положение и направление строки текста. Текст может . быть представлен символами двух видов: аппаратными и программными. Программный шрифт строится соответствующими графическими программами, заранее сохраняемыми в памяти компьютера. Построение его занимает больше времени, чем построение символов аппаратного шрифта, но зато форма может быть гораздо более замысловатой. Символы аппаратного шрифта состоят из отдельных отрезков, формирующих буквы.
Приведенный ниже листинг демонстрирует построение текстовой строки АВС . с помощью библиотек РН1ОБ и Орепб[, Символы необходимо сохранить в виде растровых картинок, прежде чем их можно будет использовать в ОрепО1„точно так же, как и маркеры. РН165 РуесоогЗ Шгесттоп[2] " ( (0.0. 0.0, 0.0). (!О О, 10.0. !0.0)): /* Нвпрввпение строки текста задается двумя радиус-векторами.
*/ Рротп[3 раис(оп - (5.5 5.0. 5.0): /* Положение строки текста. */ реек[3(броз!стоп.о!гесс!оп,"АВС ) /* Построение строки тенете с уквзвнныии параметрами. *! ОрепЯ. 6[ноуте вНЗ] = (Охоо. Охоо, ОхЗС Охбо. Охот, ОхбЬ. Охбо Охбб. ОхсЗ, Ох/е. Охоо. Охоо. Охоо). 6[опусе ЬПЗ] - (Охоо, Охоо. ОхсЗ. ОхсЗ. ОхсЗ. ОхсЗ. Ох//. ОхсЗ, ОхсЗ, ОхсЗ. Охбб. ОхЗс. Ох!8); Я цбу[е с[!3] - (Охоо.
Охоо. Ох/3. Охс7, ОхсЗ. ОхсЗ. Охс7. Охте. Охс7. ОхсЗ. Охсз, Охс7. Охте): /* Растровые синвопы А, В и С Растр задается снизу вверх построчно. *l 6[з1зет нтбСЬ - 8: /* Ширина растра в пиксепвх. */ И.зтзе~ Ьетдлт - 13: /* Высота рвстрв в пикселвх *! ВИ1овт опд1п х - 0.0. ог1дтп У-О.О; /* Задание начала отсчета систеиы координат растра. Положительные значения снещвют нвчвпо отсчета вверх и вправо. отрицательные - вниз и влево */ 6[/1оа[ тпсге х - !0.0, шсге у - 0.0; /* Поправки к положению растра после выведения. */ 6[/1ове нюте[3] - (!.О.
!.О. 1.0). /» Задание цвета текств. "/ Я Т)овт роз)стоп[2] - (20.5. 20.5): /* Координвты символов. */ 01Ртхе15[огет(6[ ОМРАСК А(16МИЕМТ !). /* Уствновйв режиме хранения пккселов. влияющего нв работу 018ттюар */ 01Со1огЗ[у(н)тже); /* Установив белого цвете синволов, *! д1йвз(егРоз2ГУ(роз1юоп): /* Установка текущего положения растра *! д)В)тлюр(ытт(ьэ.
ьетдьв. оятепп х..оптдтп у. тиссе к.' )псге.у. аясеятдх): /* Выводит растровую нартинку заданную в последнеи аргументе. представляющен собой указатель на зту картинку. пояснение и разиер растра указываются первыми нетырьня аргуиентани. */ 3.5. Ввод графики Как уже отмеча/юсюя графической программе может требоваться поддержка ввода графических элементов, таких как точки, отрезки и многоугольники, а не только чисел и текстовых строк. Например, если пользователь хочет вычислить площадь многоугольника на экране нли увеличить его размеры, он должен сначала указать ннтересуюн(ий его многоугольник среди прочих объектов, видимых на экране. Для ввода графики используется два вида физических устройств; локатор (устройство ввода координат) и кнопка.
Локитор (1осотог) передает графической программе информацию о своем положении, то есть о положении курсора. Ктюпка (/)и(п)п) сообтцает о действиях пользователя (включении и выключении) в месте текущего положения курсора. В наши днн наиболее популярным устройством графического ввода является мышь, которая выполняет обе функции. Шарик в нижней части корпуса мыши псзполяет вводить координаты, а кнопки наверху корпуса передают программе действия пользователя. Устройство графического ввода может работать в трех режимах: опрос, запрос и выбор.
В режиме опроса (яапт//Бпй) осуществляется постоянное считывание состояния устройства ввода, прежде всего положения локатора. Например, если вы свободно рисуете на экране, перемещая мышь, она работает э режиме опроса. Перемещение мыши приводит к непрерывному перемещению курсора по экрану. В режиме зал/)оси (гег/иеЖлй) положение локатора считывается только при отправке запроса, которая обычно произволится при нажатии на кнопку мыши. Чтобы прояснить различие между режимами опроса и запроса, рассмотрим процесс построения многоугольника путем графического задания ксюрдинат его вершин при помощи мыши.
В этом случае мы перемепгаем мышь до тех пор, пока курсор не окажется в нужном месте, после чего нажимаем кнопку. Курсор перемешается по экрану согласно движениям мыши, которая находится при этом в режиме опроса. Координаты вершин передаются графической программе в режиме запроса У этих режимов есть общее свойство: графической программе передаются координаты мыши или курсора, В режиме оыборп (/)тсйпй) устройство графического ввода идентифицирует элемент экрана, на который указывает курсор в момент нажатия кнопки.
Графические элементы можно идентифицировать по именам, присвоенным им программистом во врел(я составления программы. Режим выбора очень удобен прн редактировании чертежа, ужо имеющегося на экране (например, для удаления многоутольннков или изменения координат их вершин). 3.6. Дисплейный файл Лисллевйты(1 фийл ((Ьр!иу Ы) — это группа колтанд графической библиотеки, сохраненная для последующего выполнения. Большинство команд графических библиотек могут либо помещаться в дисплейный файл, либо выполняться немедленно.
Дисплейный файл обеспечивает удобство и эффективность унорядо'гения и обработки команд библиотеки. Рассмотрилт, например, перемещение изображения дома по экрану. Предположим';что рисунок состоит из неевх)ль((йк; и, сотен отрезков. Если бы эти отрезки существовали по отдельности, иам пришлось бы написать команду перемещения несколько сотен раз — для каждого иэ них. Олнако если команды построения отрезков, образующих рисунок, объединены в дисплейный файл, команду перемещения достаточно написать только один раз.
Чтобы поместттть графические элементы в дисплейный файл, нужно открыть этот файл перел первой командой, которая должна в него попасть, и закрыть его после последней команды (см. пример ниже). ОрепИ. д1дем.тзв(АЙЕЯ Е)Е) ВЕ ССИР1ЕЕ Янб ЕХЕООЕЕ): /* Открытие дисплейного фаила с именем АлеА е!ее. "/ д)ВЕдтп(6$ Р0 НОВЫ) д!Негтей2(н(ро1пт1). д1Негтех2ГХ(ротп(2): д)Епо(): /* Определение многоугольника.
*/ д1Епбь(зт(); /* Закрытие дисплеиного фаина */ Дисплейный файл ОрепС!. ориентирован на оптимизацию производительности, в частности, при работе по сети. но не за счет производительности на отдельном компьютере. Оптимизация обеспечивается благодаря тому, что дисплеииыи . файл хранится в виде списка команд, а не в виде динамической базы данных.
Другими словамн, созданный дисплейный файл изменить уже нельзя. Если бы. его можно было изменять, пропзволительность упала бы яз-за накладных расход дов на поиск внутри списка и управление памятью. Изменение отдельных частей. дисплейного файла потребовало бы перераспределения памяти, что могло бы привести к ее фрагментации. Дисплейные файлы, как правило, работают так же быстро, как н обычные последовательности команд, не объединенные в группьь, В случае Ореп( 1 дисплейные файлы могут значительно повысить производительность, в особенности при передаче подпрограмм Орепб1 по сети, поскольку файлы эти хранятся на сервере, благодаря чему сокращается сетевой трафик.
К созданному дисплейному файлу могут быть применены следующие операции; С3 множественное выполнение (тпн!Вр(с ехесцб(оп) — один и тот же файл можно выполнять много раз; Ея иерархическое выполнение (й!егагсй!са! ехесцг!оп) — иерархическим называется дисплейный файл (родительский), вызывающий другие дисплейные файлы (дочерние). Иерархические дисплейные файлы удобны для объектов;,. '. состоящих из отдельных компонентов, особенно если некоторые компонентьт, - '' входят в объект в нескольких экземплярах; Е;) удаление (((е(ег!Оп) — дисплейный файл может быть удален. 3.7. Матрица преобразования Как говорилось в разделе 3.2, проецирование точек на объект в трехмерном про-" ''': странстве требует преобразования координат из одной системы в другую.