Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Тема 7. Основы дескрипторной графики.



1. Дескрипторная графика ( Handle Graphics) – это объектно-

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

2. Работа всех высокоуровневых графических функций MATLAB основана на использовании графических объектов. Например, вызов функции

> > h=plot(x, y) создает графическое окно – графический объект Figure, создает систему координат – графический объект Axes, рисует линию при помощи графического объекта Line, дескриптор которого возвращает в качестве значения переменной h. Если функция выводит графики нескольких функций, то создается несколько графических объектов класса Line, при этом в переменной h будет содержаться массив дескрипторов.

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

4. Иерархия графических объектов.

Графический объект Root

Графический объект Root соответствует экрану компьютера. Существует единственный объект Root, который не имеет родителей, а все другие графические объекты являются его потомками. Непосредственными потомками объекта Root являются объекты Figures.

Дескриптор объекта Root – 0. Этот объект создается в момент запуска системы MATLAB и не может быть удален. Но пользователь может управлять его свойствами с помощью функций set (0), get (0).

Графический объект Figure

Графический объект Figure соответствует отдельному графическому окну на экране, где отображаются графические визуальные данные. В MATLAB нет ограничений на количество создаваемых графических окон. Все высокоуровневые команды и функции, которые выводят графики (plot, surf, contour), автоматически создают графический объект Figure, если он не существует. Дескриптором графического объекта Figure является номерграфического окна. Дескриптор графического объекта Figure может быть определен с помощью команды gcf. Пользователь может управлять его свойствами с помощью функций set(1), get(1) или set (hf, …), get(hf, …), где hf – дескриптор текущего окна. Пример:

Следующий фрагмент кода создает два графических окна Figure и выводит графики поочередно в одно из окон:

> > x=0: 0.01: 2*pi;

h1=figure(1); h2=figure(2);

figure(1); plot(x, sin(x));

figure(2); plot(x, cos(x), x, sin(x));

figure (h1); plot(x, [cos(x); sin(x); sin(2*x )]);

Функция Назначение
figure Открыть графическое окно (команда)
gcf Получить дескриптор текущего объекта figure
clf Очистить графическое окно figure
close Закрыть графическое окно figure
refresh Обновить графическое окно figure

Графический объект Axes

Графический объект Axes задает область размещения графика в окне объекта Figure. Текущий объект Axes является целью для функций, рисующих графические объекты image, line, patch, surface, text. Все высокоуровневые команды и функции, которые выводят графики (plot, surf, contour, mesh, bar), автоматически создают графический объект Axes, если он не существует. Дескриптор графического объекта Axes может быть определен с помощью команды gca. Пользователь может управлять его свойствами с помощью функций set (gca), get (gca). Пример:

Следующий фрагмент кода создает два объекта Axes в одном графическом окне:

> > axes('position', [.1.1.8.6])

mesh(peaks(20));

axes('position', [.1.7.8.2])

pcolor ([1: 10; 1: 10]);

Функция Назначение
axes Создание осей координат (команда)
cla Очистка очей координат
gca Получение дескриптора графического объекта Axes

 

8. Графический объект UI. Объекты Uicontrol являются управляющими элементами пользовательского интерфейса, которые выполняют функции обратного вызова, когда пользователь активизирует объект. Объект Uimenu является выпадающим меню, который выполняет функции обратного вызова, когда пользователь активизирует пункт меню. Система MATLAB размещает Uimenu в Menu Bar окна Figure справа от существующего меню, определенного системой. Объект Uicontextmenu создает контекстное меню, которое появляется, когда пользователь нажимает правую кнопку мыши над графическим объектом.

9. Графический объект Image. Для работы с растровыми изображениями предназначен графический объект image. Команда image создает графический объект, интерпретируя каждый элемент матрицы как индекс цветовой палитры colormap или непосредственно как RGB - значение в зависимости от способа представления данных. Существует три основных типа задания изображения, которые отличаются по способу интерпретации элементов матрицы данных в качестве цветов пикселей (цветовых моделей) – индексный режим (indexed mode), режим, устанавливающий соответственно доли красного, зеленого и синего цветов (truecolor mode), и режим, устанавливающий цветовой тон, насыщенность и интенсивность (intensity).

Функция Описание
image Вывод графического образа
iminfo Информация о графическом образе
imread Чтение изображения из графического файла
imwrite Запись изображения в графический файл

 

10. Графический объект Light. Графический объект Light определяет источник света, который воздействует на все графические объекты класса patch и surface. Нельзя увидеть источники света, но можно установить свойства, управляющие стилем, цветом, позицией и другими свойствами, общими для всех графических объектов. Пример: Следующий фрагмент кода помещает источник света в бесконечность, ориентирует его вдоль вектора [1 0 0], т.е. вдоль оси Ox. Источник света освещает поверхность.

> > h=surf(peaks);

set (h, 'FaceLighting', 'phong ', ...'FaceColor', 'interp', 'AmbientStrength', 0.5);

light ('Position', [1 0 0], 'Style', 'infinite ');

Свойство Описание
Color Цвет источника света
Style Указывает на бесконечную (значение infinite по умолчанию) или конечную (значение local) удаленность источника света от объекта
Position Три координаты, задающие положение источника света в случае конечной его удаленности или направление на бесконечно удаленный источник света. В последнем случае направление определяется прямой, проходящей через задаваемую точку и начало координат

 

11. Графический объект Line. Графический объект Line является графическим примитивом для создания двумерных и трехмерных графиков. Высокоуровневые команды plot, plot3, contour создают графические объекты Line. Следующий пример использует функцию line для добавления тени к нарисованному графику функции sin. Сначала при помощи функции plot рисуется линия, и ее дескриптор сохраняется в hline1. Затем добавляется более широкая и более светлая тень смещением покоординате x. Наконец, первая линия помещается поверх второй.

> > t = 0: pi/20: 2*pi;

hline1 = plot (t, sin(t), 'k');

hline2 = line (t+.06, sin(t), 'LineWidth', 4, ... 'Color', [.8.8.8]);

set (gca, 'Children', [hline1 hline2])

12. Графический объект Patch. Графический объект Patch представляет собой один или несколько многоугольников, определенных координатами своих вершин, при этом многоугольники могут быть соединены, а могут быть не соединены между собой. Высокоуровневые команды fill, fill3, contour, contour3 создают графические объекты Patch и возвращают его дескриптор. Следующий фрагмент кода строит куб, каждая грань которого раскрашена в свой цвет:

> > vm=[0 0 0; 1 0 0; 11 0; 0 1 0; 0 0 1; … 1 0 1; 1 1 1; 0 1 1];

fm=[1 2 6 5; 2 3 7 6; 3 4 8 7; 4 1 5 8;...1 2 3 4; 5 6 7 8];

clf;

view(3);

axis square

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

> > clf;

set (gca, 'Visible', 'off');

rectangle( 'Position', [ -.9 -.4 1.8.8], ...'Curvature', [1 1], 'FaceColor', [1.7.7]);

rectangle( 'Position', [ -.8 -.3 1.6.6], ...'Curvature', [.5.5], 'FaceColor', [.7 1.7]);

rectangle( 'Position', [ -.7 -.2 1.4.4], ...'Curvature', [0 0], 'FaceColor', [.7.7 1]);

14. Графический объект Surface. Графический объект Surface представляет собой результат трехмерной визуализации массива данных, когда элемент массива определяет высоту точки над плоскостью xOy. Таким способом формируется трехмерная поверхность, состоящая из четырехугольников, вершины которых определяются массивом исходных данных. Графические объекты Surface создаются при вызове высокоуровневых функций pcolor, surf, mesh или низкоуровневой функции surface. Следующий фрагмент кода демонстрирует создание графического объекта Surface при помощи функции surface:

> > title('SURFACE - regular surface')

t= 0: pi/10: 2*pi;

[X, Y, Z]= cylinder(.7+.3*cos(t)); Т

Z= Z - 0.5;

hs= surface(X, Y, Z);

15. Графический объект Text. Графический объект Text представляет собой текстовый объект, т. е. строки символов, выводимые в графическом окне. Графические объекты Text создаются при использовании высокоуровневых команд title, xlabel, ylabel, zlabel, gtext или низкоуровневой команды text. Следующий фрагмент кода рисует график функции y=sin(x) в диапазоне [0 2*pi] и подписывает график в позиции (pi, 0) в виде “← sin(π )”:

> > plot(0: pi/20: 2*pi, sin (0: pi/20: 2*pi));

text (pi, 0, '\leftarrow sin (\pi)', 'FontSize', 18);

16. Управление свойствами объектов. Для получения и установки свойств графических объектов используются функции get и set, которые выполняют действия в зависимости от входных параметров.

Функция Описание
get (hobj) Вывод списка текущих значений свойств графического объекта с дескриптором hobj
set (hobj) Вывод списка возможных значений всех свойств объекта
get (hobj, ’PropertyName’) Вывод текущего значения указанного свойства объекта
set (hobj, ’PropertyName’) Вывод списка возможных значений свойства объекта
set (hobj, ’PropertyName’, ’PropetyValue’) Установка нового значения указанного свойства объекта
reset(hobj) Восстановление стандартных значений свойств по умолчанию объекта

 

17. Изменение свойств. Кроме этого, можно изменить значения свойств, установленные по умолчанию, на уровне родительских объектов. Например, изменить свойства графического объекта Text, установленные по умолчанию, можно на уровне родительских объектов Axes, Figure и Root:

> > set(0, 'DefaultTextProperty', PropertyValue...)

> > set(gcf, 'DefaultTextProperty', PropertyValue...)

> > set(gca, 'DefaultTextProperty', PropertyValue...)

 

Тема 8

Импорт и экспорт данных


Поделиться:



Последнее изменение этой страницы: 2017-03-17; Просмотров: 1836; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.02 с.)
Главная | Случайная страница | Обратная связь