русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Объекты дескрипторной графики


Дата добавления: 2015-07-23; просмотров: 1348; Нарушение авторских прав


Как уже отмечалось, графические средства MATLAB базируются на низкоуровневой графике, которая называется дескрипторной (описательной), или handle графикой. По существу, эта графика обеспечивает объектно-ориентированное программирование как всех рассмотренных выше графических команд, так и пользовательского интерфейса. Графический редактор дескрипторной графики Property Editor в MATLAB 6 является основным редактором графики и нами уже использовался. Хотя обычный пользователь может даже не знать о существовании дескрипторной графики ввиду того, что слово «дескрипторная» в сокращенное название графического редактора не входит, все же надо учитывать, что именно дескрипторная графика дает новые, подчас уникальные возможности создания пользовательских графических программ MATLAB 6, не говоря уже о том, что она помогает понять, каким образом реализованы графические средства системы.

Центральным понятием дескрипторной графики является графический объект. Имеются следующие типы таких объектов:

· root (корень) — первичный объект, соответствующий экрану компьютера;

· figure (рисунок) — объект создания графического окна;

· uicontrol (элемент управления, определенный пользователем) — объект создания элемента пользовательского интерфейса;

· axes (оси) — объект, задающий область расположения графика в окне объекта figure;

· uimenu (определенное пользователем меню) — объект создания меню;

· uicontextmenu (определенное пользователем контекстное меню) - объект создания контекстного меню;

· image (образ) — объект создания растровой графики;

· line (линия) — объект создания линии;

· patch (заплата) — объект создания закрашенных фигур;

· rectangle (прямоугольник) - объект создания закрашенных прямоугольников;

· surface (поверхность) — объект создания поверхности;

· text (текст) — объект создания текстовых надписей;



· light (свет) — объект создания эффектов освещенности.

Объекты подчас взаимосвязаны и могут обращаться друг к другу для получения того или иного графического эффекта.

Создание графического окна и управление им

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

· figure — открыть чистое графическое окно;

· gcf — получить дескриптор графического окна figure;

· elf — очистить графическое окно;

· shg — показать ранее свернутое графическое окно;

· close (закрыть) — закрыть графическое окно;

· refresh (обновить) — обновить графическое окно.

Эти команды и функции достаточно очевидны, и мы не будем обсуждать их подробно. Заметим, что команды help name или doc name позволяют уточнить назначение той или иной команды или функции с обобщенным именем name.

Создание координатных осей и управление ими

Еще одна группа простых команд служит для создания координатных осей и управления ими:

· axes (оси) — создать оси координат;

· box (ящик) — построить прямоугольник вокруг рисунка;

· сlа — убрать построения axes;

· gса — получить дескриптор графического объекта axes;

· hold — сохранить оси координат;

· ishold — проверка статуса hold (1, если оси сохранены, и 0 в противоположном случае).

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

Пример применения объекта дескрипторной графики

Объем и направленность данной книги не позволяют подробно описать все многообразие возможностей дескрипторной графики. Ограничимся пока одним примером. Пусть надо построить линию,-проходящую через три точки с координатами (0,1), (2,4) и (5,-1). Для этого воспользуемся объектом line, который порождается одноименной графической функцией:

» line([0 2 5],[1 4 -1],'color ', 'blue')

На рис. 7.5 построена заданная линия с помощью дескрипторной команды line, которая явно не входит в высокоуровневую графику. Однако нетрудно понять, что именно эта команда составляет основу высокоуровневой команды pi ot, описанной ранее.

Особенность команды 1 i ne заключается в явном задании всех условий построения графика: координат конкретных точек, параметра цвета 'Color' и самого цвета 'blue' (синий). В итоге строятся два отрезка прямой, проходящих через заданные точки и имеющие синий цвет.

Рис. 7.4.Построение отрезков прямой объектом line

 

Дескрипторы объектов

С понятием объектов дескрипторной графики связана особая характеристика объектов — дескриптор (описатель). Его можно понимать как некое число — своеобразный идентификатор («распознаватель») объектов.

Рис. 7.5.Графики пяти функций, представляющих значения элементов магической матрицы magic(5)

Дескриптор объектов root всегда равен 0, а дескриптор объектов figure (рисунок) — это целое число, указывающее на номер графического окна. Дескрипторы других объектов — это числа с плавающей запятой. По значениям дескрипторов MATLAB идентифицирует объекты. Дескриптор одного такого объекта представляет собой одно число, а если объектов несколько — несколько чисел (вектор). Например, следующие команды строят пять графиков, представляющих значения элементов магической матрицы (магического квадрата), в одном окне:

» A=magic(5);

» h=plot(A)

h=

3.0013

101.0009

102.0004

103.0004

104.0004

В данном случае вектор h содержит дескрипторы элементов графика, показанного на рис. 7.5.

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

Операции над графическими объектами

К графическим объектам применяется ряд операций:

· set — установка свойств (параметров) графического объекта;

· get — вывод свойств графического объекта;

· reset — восстановить свойства графического объекта по умолчанию;

· delete — удалить созданный графический объект;

· gсо — возвращает дескриптор текущего графического объекта;

· gcbo — возвращает дескриптор объекта, чья функция в данный момент выполняется;

· gcbf — возвращает дескриптор окна, содержащего объект, функция которого в данный момент выполняется;

· drawnow — выполнить очередь задержанных графических команд;

· findobj — найти объекты с заданными свойствами;

· copyobj — скопировать объект и порожденные им объекты.

Кроме того, имеются три утилиты, связанные с операциями над объектами:

· closereq — закрыть окно по запросу;

· ishandle — проверить дескриптор на истинность;

· newplot — восстановить свойства объекта, измененные nextPlot.

Назначение большинства этих операций достаточно очевидно. Мы остановимся на двух наиболее важных операциях, связанных с контролем и установкой свойств объектов.

Свойства объектов — команда get

Каждый объект дескрипторной графики имеет множество параметров, определяющих его свойства. Вернемся к нашему примеру с построением графика из двух отрезков линии и повторим этот пример в следующем виде:

» h=line([0 2 5].[1 4 -1],'Color','blue')

h =

3.0010

Теперь объект имеет дескриптор h и его значение выведено наряду с построением графика. Команда get (name) выводит свойства объекта с заданным именем. Для нашего объекта это выглядит следующим образом:

» get(h) Color = [001]

EraseMode = normal

LineStyle=-

LineWidth = [0.5]

Marker = none

MarkerSize = [6]

MarkerEdgeColor = auto

MarkerFaceColor = none

XData = [0 2 5]

YData = [14 -1]

ZData - []

BeingDeleted = off

ButtonDownFcn =

Children = []

Clipping = on

CreateFcn =

DeleteFcn =

BusyAction = queue

HandleVisibility = on

HitTest = on

Interruptible = on

Parent = [100.001]

Selected =off

SelectionHighlight = on

Tag =

Type=line

UIContextMenu = []

UserData = []

Visible = on

Изменение свойств объекта — команда set

С помощью команды set можно изменить отдельные свойства объекта дескрипторной графики. Эта команда имеет множество параметров, и с ними можно ознакомиться с помощью команд help set или doc set. Ограничимся примером — допустим, нам надо сменить цвет линии с голубого на красный. Для этого достаточно выполнить следующую команду: » set(h,'Color'.'red')

Обратите внимание, что при этом цвет сменится на ранее построенном рисунке с дескриптором h.

Управление работой средств OpenGL

Как уже неоднократно отмечалось, одной из новинок системы MATLAB 6 является поддержка графических средств OpenGL. Эти средства обычно используются чаще всего при реализации трехмерной графики, например при осуществлении сло.жной функциональной окраски поверхностей и трехмерных фигур с учетом характера освещения и структуры материала (рендеринг), при осуществлении анимации для таких объектов, при построении поверхностей из многоугольников, осуществлении эффектов прозрачности и т. д. Целый ряд примеров этого уже приводился как в уроке 6, так и в данном уроке.

Средства OpenGL в MATLAB задействованы автоматически. Это значит, что они будут использованы, если видеокарта компьютера пользователя поддерживает их и если установлены соответствующие драйверы видеоадаптера. На уровне средств стандартной графики MATLAB никаких функций управления OpenGL нет. Однако дескрипторная графика такую возможность предоставляет с помощью команды opengl selectionjnode

Эта команда задает графические режимы осуществления рендеринга. Параметр selectl onjnode может принимать следующие значения:

· autosel ect — задает автоматическое применение OpenGL и вводит в работу средства OpenGL при наличии возможностей для этого;

· neverselect — отключает автоматическое применение OpenGL;

· advise — выводит сообщение о возможности применения OpenGL, но режим рендеринга (RenderMode) устанавливается вручную.

Просто команда opengl выводит сообщение о текущем значении selectionjnode, например:

» opengl

ans =

AutoSelect

А команда opengl info выводит данные о средствах OpenGL ПК, на котором установлена система MATLAB, например:

» opengl info

Version = 1.1.0

Vendor = Microsoft Corporation

Renderer = GDI Generic

MaxTextureSize = 1024

Extensions = GL_WIN_swapJiint GL_EXT_bgra

GL_EXT_paletted_texture

Возможно также управление средствами рендеринга и OpenGL на уровне средств дескрипторной графики с помощью команды set, например: set(gcf.'Renderer','OpenGL')



<== предыдущая лекция | следующая лекция ==>
Основные средства анимации | Управление прозрачностью графических объектов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.962 сек.