- •Санкт-Петербургский государственный электротехнический университет
- •______________________________________________________________________ Кафедра моэвм
- •Санкт-Петербург
- •2007 Введение
- •Взаимодействие между пользователем и компьютером
- •Основные принципы создания интерфейса
- •Проектирование эргономичного интерфейса
- •Размещение информации на экране
- •Использование цвета
- •Выделение элементов интерфейса
- •Непротиворечивость и стандартизация
- •Отображение текстовой информации
- •Ввод текстовой информации
- •Дизайн заголовков и полей
- •Средства управления графическим интерфейсом
- •Принципы создания и проектирования меню
- •5. Дескрипторная графика
- •5.1. Назначение дескрипторной графики
- •5.2. Иерархия графических объектов
- •5.3. Текущий графический объект; указатели на объекты
- •5.4. Доступ к значениям свойств графических объектов
- •5.5. Свойства осей
- •5.6. Свойства графических окон
- •5.6.1. Расположение и вид графических окон
- •5.6.2. Способы графического вывода
- •5.6.3. Цветовая палитра
- •5.6.4. Печать графического окна
- •5.7. Базовые графические объекты.
- •5.7.1. Текстовый объект, вывод текста и математических формул в графическое окно.
- •5.7.2. Размещение текстового объекта, определение его размеров и положения.
- •5.7.3. Размещение текста на трехмерных графиках.
- •5.7.4. Изменение вида текстового объекта.
- •5.7.5. Указание положения текстового объекта и надписи при помощи свойств. Пример: "бегущая строка".
- •5.7.6. Вывод многострочного текста.
- •5.7.7. Примечание про логическое индексирование.
- •5.7.8. Заголовок и подписи осей это текстовые объекты, потомки осей.
- •6. Приложения с gui
- •6.1. Создание приложения hello в среде guide
- •6.2. Запуск приложения без среды guide и редактирование
- •6.3. Как работает приложение, созданное в среде guide?
- •7. Заключение
5.6.2. Способы графического вывода
Как мы уже упоминали, высокоуровневые графические функции plot, mesh, surf и др. создают графическое окно, оси и размещают на них графический объект, или же выводят график на имеющиеся оси. Рассмотрим этот вопрос более подробно, какие свойства графического окна и осей отвечают за способ вывода нового графического объекта.
Эти свойства носят одинаковое название NextPlot и для графического окна, и для осей. В зависимости от их значений происходит либо вывод графика на существующие оси графического окна, либо создаются новые оси, а имеющиеся остаются или исчезают.
Если свойство NextPlot текущего графического окна имеет значение:
'add' (по умолчанию), то в окно добавляются новые оси для графического вывода;
'replace', то удаляются все потомки графического окна, указатели на которые не являются скрытыми, и все свойства окна (кроме Position и Units) принимают значение по умолчанию;
'replacechildren', то удаляются все потомки окна, указатели на которые не являются скрытыми, а все свойства окна сохраняют свои значения;
5.6.3. Цветовая палитра
При выводе поверхностей и полигональных объектов на оси графического окна возможно несколько способов их цветовой закраски - явное указание цвета ячеек и ребер в формате RGB и задание индексированного цвета, т.е. одного из определенных в текущей палитре цвета графического окна. Сейчас мы рассмотрим второй способ - использование палитры.
Палитра формируется для графического окна и сколько бы пар осей оно не содержало, все равно для каждой из них будет использоваться одна и та же заданная палитра. Палитра задается матрицей с тремя столбцами, каждая строка которой содержит цвет в формате RGB. Элементы строки задают интенсивность соответствующего цвета и должны принадлежать [0, 1] (0 - минимальная интенсивность, 1 - максимальная).
Имеется ряд предопределенных палитр: autumn, bone, colorcube, cool, copper, flag, hot, hsv, jet (по умолчанию), lines, pink, spring, summer, white и winter. Способ изменения цвета, принятый в этих палитрах описан в справочной системе в разделе с информацией о функции colormap. Для получения наглядного представления об этих палитрах проще всего установить палитру окна и воспользоваться командой colorbar:
figure
colormap(autumn)
colorbar
Функция rgbplot выводит график, показывающий доли красного, зеленого и синего в цветах палитры:
rgbplot(hsv)
Каждая из предопределенных палитр по умолчанию содержит 64 цвета или оттенка, что может быть изменено на значение не превосходящее 256 (для MS-Windows), например:
colormap(gray(4))
Залитая цветом поверхность создается высокоуровневыми функциями surf и др., либо низкоуровневой surface. При этом, если цвет не задан, то по умолчанию цвет закраски ячеек поверхности зависит от высоты ячейки (т.е. от значения визуализируемой сеточной функции). Наименьшее значение соответствует первому заданному цвету палитры, а наибольшее - последнему. Промежуточные значения определяются путем линейной интерполяции так, как показано на рис. 4.
Рис.4. Соответствие значения функции и цвета палитры.
Такой способ отображения принят по умолчанию. Он может также зависеть от свойств осей и поверхности. Этот вопрос, а также управление прозрачностью объектов, мы разберем после обзора основных свойств поверхностей.
Для создания собственной цветовой палитры графического окна следует задать соответствующую матрицу и указать ее в качестве значения свойства ColorMap. Например, последовательность команд
[X, Y] = meshgrid(-2:0.1:2);
Z = X + Y + sin(pi*X).*cos(pi*Y);
hF = figure;
surf(X, Y, Z)
c = 1./(1:0.01:3)';
CM = [zeros(size(c)) c zeros(size(c))];
set(hF, 'ColorMap', CM)
приводит к палитре, содержащей только оттенки зеленого цвета (см. рис. 5)
Рис. 5. Пример создания палитры с оттенками зеленого цвета.