Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Приложения с GUI и дескрипторная графика.doc
Скачиваний:
49
Добавлен:
01.05.2014
Размер:
699.39 Кб
Скачать

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. Пример создания палитры с оттенками зеленого цвета.