Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Тема 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 )]);
Графический объект 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]);
8. Графический объект UI. Объекты Uicontrol являются управляющими элементами пользовательского интерфейса, которые выполняют функции обратного вызова, когда пользователь активизирует объект. Объект Uimenu является выпадающим меню, который выполняет функции обратного вызова, когда пользователь активизирует пункт меню. Система MATLAB размещает Uimenu в Menu Bar окна Figure справа от существующего меню, определенного системой. Объект Uicontextmenu создает контекстное меню, которое появляется, когда пользователь нажимает правую кнопку мыши над графическим объектом. 9. Графический объект Image. Для работы с растровыми изображениями предназначен графический объект image. Команда image создает графический объект, интерпретируя каждый элемент матрицы как индекс цветовой палитры colormap или непосредственно как RGB - значение в зависимости от способа представления данных. Существует три основных типа задания изображения, которые отличаются по способу интерпретации элементов матрицы данных в качестве цветов пикселей (цветовых моделей) – индексный режим (indexed mode), режим, устанавливающий соответственно доли красного, зеленого и синего цветов (truecolor mode), и режим, устанавливающий цветовой тон, насыщенность и интенсивность (intensity).
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 ');
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, которые выполняют действия в зависимости от входных параметров.
17. Изменение свойств. Кроме этого, можно изменить значения свойств, установленные по умолчанию, на уровне родительских объектов. Например, изменить свойства графического объекта Text, установленные по умолчанию, можно на уровне родительских объектов Axes, Figure и Root: > > set(0, 'DefaultTextProperty', PropertyValue...) > > set(gcf, 'DefaultTextProperty', PropertyValue...) > > set(gca, 'DefaultTextProperty', PropertyValue...)
Тема 8 Импорт и экспорт данных
|
Последнее изменение этой страницы: 2017-03-17; Просмотров: 1934; Нарушение авторского права страницы