Трехмерная графика
В трехмерной графике выполняются представления функции z = z(x, y), отличающиеся способом соединения точек: линия, сечения, сетчатая или сплошная поверхность.
Рис. 4.7 |
Команда plot3(x, y, z) в тех же вариациях, что и plot, предполагает задание одномерных и двумерных массивов – строятся точки с координатами x(i,:), y(i,:), z(i,:) для каждого столбца и соединяются прямыми линиями. Применив команды: »t = 0.01 : 0.01 : 20*pi; »plot3(cos(t), sin(t), t.^3) получим «пружину» (рис. 4.7). |
Рис. 4.8
Рис. 4.9 |
При использовании [x, y] = meshgrid(...) можно построить сечения (рис. 4.8 и 4.9) при выполнении последовательности команд: »xord = –1 : .05 : 1; »yord = –1 : .05 : 1; »[x, y] = meshgrid(xord, yord); »z1 = x .* sin(x.^2 – y.^2); »z2 = y .* cos(x.^2 + y.^2); »plot3(x, y, z1), grid on; % рис. 4.8 »mesh(xord, yord, z2) % рис. 4.9 Команды mesh(x, y, z, c), mesh(z, c), mesh(z) определяют задание сетчатой поверхности (массив c определяет цвета узлов поверхности; если x, у не указаны, то x = 1: n, y = 1: m, где [m, n] = size(z). |
Аналогичная команда meshс в дополнение к поверхности строит проекции линий уровня, а meshz делает срез поверхности до нулевого уровня (своеобразный пьедестал). Результаты их применения показаны на рис. 4.10.
»meshc(xord, yord, z1) |
»meshz(x, y, z2) |
Рис. 4.10 |
Команды surf(x, y, z, c), surf(z, c), surf(z) определяют задание сплошной поверхности, отличаясь от mesh системой окраски; команда surfс(...) задает проекции линий уровня. Примеры их использования приведены на рис. 4.11.
»surf(z) |
»shading interp |
Рис. 4.11 |
Реализация трехмерной графики может сопровождаться множеством вспомогательных команд, например:
hidden on / off включает или выключает режим удаления невидимых линий (по умолчанию on);
shading faceted / flat / interp устанавливает затенение поверхностей (по умолчанию faceted дает равномерную окраску ячеек с черными гранями, flat – цветами узлов сетки, interp – интерполяцией цветов.
Задание осей координат
Графический объект создается автоматически при обращении к командам, порождающим объекты Line и Surface, или командой axec('<имя свойства>', <значение>, ...). Есть и команды более высокого уровня:
axis([xmin xmax ymin ymax]), axis([xmin xmax ymin ymax zmin zmax]) устанавливает масштаб по осям;
axes off / on выключает (включает) вывод на координатные оси обозначений и маркеров;
grid on / off, grid включает (выключает) или переключает режим нанесения координатной сетки на осях;
box on / off, box включает (выключает) или переключает режим рисования контура параллелепипеда, трехмерный объект;
zoom on / off включает (выключает) режим интерактивного масштабирования графиков: левая кнопка мыши увеличивает масштаб вдвое, правая – уменьшает; удержанием левой кнопки мыши можно выделить прямоугольную область для детального просмотра; zoom out восстанавливает исходный график.