Глава 2. Графика в Matlab
При вызове команды meshz(X,Y,Z) создается график, представленный на рис. 2.37.
Рис. 2.37. Трехмерная поверхность с "подложкой"
В этом случае график отображается с "подложкой": область под поверхностью представляет собой заполненный объем. Это довольно специфический режим отображения поверхностей, который, тем не менее, бывает в некоторых случаях весьма удобен и полезен.
С помощью функции mesh() создаваемые трехмерные поверхности отображаются в виде сетки. Если необходимо сделать поверхность сплошной, обычно используют функцию surf(). Результат создания трехмерной поверхности с помощью команды surf(X,Y,Z) представлен на рис. 2.38.
Кроме базовой сетки, выполнена также заливка цветом. Во всем остальном график схож с тем, что создавался функцией mesh() (см. рис. 2.36).
Функция surfc() позволяет отображать не только трехмерную поверхность, но и контурные линии в горизонтальной координатной плоскости – в полной аналогии с функцией meshc(). На рис. 2.39 представлен результат создания графика с помощью команды surfc(X,Y,Z).
В некоторых случаях удобным может быть режим, в котором график (трехмерная поверхность) "подсвечивается" (рис. 2.40).
81
Самоучитель Matlab
Рис. 2.38. Трехмерная поверхность с заливкой цветом
Рис. 2.39. Трехмерная поверхность с заливкой цветом и контурными линиями
82
Глава 2. Графика в Matlab
Рис. 2.40. Трехмерная поверхность в режиме выделения цветом
Речь идет о цветовом выделении поверхности графика так, как если бы он находился под действием источника света. Для отображения графика в таком режиме используют функцию surfl(). В частности, график (поверхность) на рис. 2.40 создан с помощью команды surfl(X,Y,Z).
Параметрические кривые и поверхности
Скажите, доктор Ватсон, Вы понимаете всю важность моего открытия?
К/ф "Приключения Шерлока Холмса и доктора Ватсона. Знакомство"
Как известно, самый простой способ задать пространственную кривую состоит в том, чтобы параметризировать ее, то есть ввести параметр, и координаты точек на пространственной кривой представить в виде функции от этого параметра. Для создания пространственных кривых в Matlab используют функцию plot3(). В самом простом случае аргументами функции указывают векторы координат точек на пространственной кривой. Пример такой кривой представлен на рис. 2.41.
Для создания пространственной кривой использовалась следующая последовательность команд:
83
Самоучитель Matlab
Рис. 2.41. Пространственная кривая
>>t=0:0.01:2*pi;
>>x=cos(10*t).*sin(t/2);
>>y=sin(10*t).*sin(t/2);
>>z=cos(t/2);
>>plot3(x,y,z)
>>grid on
>>axis equal
Вданном случае речь идет о своеобразной винтовой линии, накрученной на
сферу. Пространственная кривая задается в параметрическом виде зависи-
мостями x(t) = cos(10t)sin(t 2) , y(t) = sin(10t)sin(t
2) и z(t) = cos(t
2) , где параметр 0 ≤ t ≤ 2π . Точка с координатами (x,y,z) находится на поверхности единичного радиуса (с центром в начале координат). Для реализации векторов с координатами точек на кривой создается вектор значений параметра t параметрической зависимости (команда t=0:0.01:2*pi). На основе этого вектора командами x=cos(10*t).*sin(t/2), y=sin(10*t).*sin(t/2) и z=cos(t/2) создается три вектора с координатами. Затем командой plot3(x,y,z) строится пространственная кривая. Командами grid on и axis equal отображается координатная сетка и устанавливается одинаковый масштаб по координатным осям.
Впараметрическом виде может быть задана и поверхность. В этом случае координаты точек на поверхности определяются как функции от двух пара-
84
Глава 2. Графика в Matlab
метров. Процесс создания параметрически заданной поверхности в Matlab мало отличается от создания поверхности, заданной в явном виде. В частности, на основе параметрических зависимостей строятся матрицы узловых точек и значения функции в этих узловых точках, после чего поверхность строится с помощью функции mesh() или surf().
В качестве иллюстрации рассмотрим процесс построения сферы, при условии, что она задана в параметрическом виде. Для сферы единичного радиуса с центром в начале координат координаты на поверхности сферы задаются зависимостями x(ϕ, θ) = cos(ϕ)sin(θ), y(ϕ, θ) = sin(ϕ)sin(θ) и z(ϕ, θ) = cos(θ) , где параметры 0 ≤ ϕ ≤ 2π и 0 ≤ θ ≤ π . Построить сферу можно с помощью серии следующих команд:
>>phi=0:0.1:2*pi;
>>theta=0:0.1:pi;
>>[Phi,Theta]=meshgrid(phi,theta);
>>X=cos(Phi).*sin(Theta);
>>Y=sin(Phi).*sin(Theta);
>>Z=cos(Theta);
>>mesh(X,Y,Z)
>>axis equal
Результат представлен на рис. 2.42.
Рис. 2.42. Сфера построена на основе параметрических зависимостей
85