Создание массивов данных для трехмерной графики

Трехмерные поверхности описываются функцией двух переменных z = f(x, y). Построение трехмерных графиков требует определение для х и у двухмерных массивов – матриц. Для создания таких массивов служит функция meshgrid, которая записывается следующим образом:

[X, Y] = meshgrid(x, y) ;

В основном она используется совместно с функциями построения графиков трехмерных поверхностей. Функция преобразует область заданную векторами х и у, в массивы X и Y, которые могут быть использованы для вычисления функции двух переменных и построения трехмерных графиков. Строки выходного массива Х являются копиями вектора х, а столбцы Y – копиями вектора у.

Пример:

>> [X Y] = mesh grid (4 : 7 , 9 : 13)
Х =  
    4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7 4 5 6 7
Y =  
    9 9 9 9 10 10 10 10 11 11 11 11 12 12 12 12 13 13 13 13

Приведем еще пример применения функции meshgrid:

>> [X Y] = meshgrid (- 1 : 0.1 : 1, -1 : 0.1 : 1);

Такой вызов функции создает опорную плоскость для построения трехмерной поверхности при изменении х и у от – 1 до 1 с шагом 0.1.

1.6.4. Построение графиков поверхностей

Для построения графиков функции z = f(x, y) используется команды plot3 ( … ), которая является аналогом команды plot ( … ). Она строит аксонометрическое изображение трехмерной поверхности и имеет следующие формы:

рlot3 (х, у, z) – строит массив точек, представленных векторами х, у, z и соединяет их отрезками прямых.

рlot3 (X, Y, Z), где X, Y, Z – три матрицы одинакового размера, строит точки с координатами X(i, : ), Y(i, : ) и Z(i, : ) и соединяет их отрезками прямых. Пример построения графика трехмерной поверхности Z = x2 + y2:

>> [X Y]=meshgrid([-3:0.15:3]);

>> Z=X.^2 + Y.^2 ;

>> plot3(X,Y,Z)

>> grid on

рlot3 (X, Y, Z, S) – обеспечивает построение графика поверхности, но со спецификацией стиля линий и точек, соответствующей спецификации команды plot.

Построение графиков поверхностей

· plot3(X,Y,Z), где X, Y и Z — три матрицы одинакового размера, строит точки с координатами X(i.:), Y(i,:) и Z(i,:) и соединяет их отрезками прямых.

>> x=-3:0.15;3;

>> y=-3:0.15:3;

>> z=x.^2+y.^2;

>> plot3(x,y,z);

>> [x,y]=meshgrid(x,y);

>> plot3(x,y,z);

MESHGRID

>> [x,y]=meshgrid(-5:0.1:5);

>> z=x.*sin(x+y);

>> meshc(x,y,z);

Here are some examples of surface plots in MATLAB.

Contents

Mesh Plot of Peaks

Surface Plot of Peaks

Surface Plot (with Shading) of Peaks

Contour Plot of Peaks

Quiver

Slice

Mesh Plot of Peaks

z=peaks(25);

mesh(z);

colormap(hsv)

Создание массивов данных для трехмерной графики - student2.ru

Surface Plot of Peaks

z=peaks(25);

surf(z);

colormap(jet);

Создание массивов данных для трехмерной графики - student2.ru

Surface Plot (with Shading) of Peaks

z=peaks(25);

surfl(z);

shading interp;

colormap(pink);

Создание массивов данных для трехмерной графики - student2.ru

Contour Plot of Peaks

z=peaks(25);

contour(z,16);

colormap(hsv)

Создание массивов данных для трехмерной графики - student2.ru

Quiver

x = -2:.2:2;

y = -1:.2:1;

[xx,yy] = meshgrid(x,y);

zz = xx.*exp(-xx.^2-yy.^2);

[px,py] = gradient(zz,.2,.2);

quiver(x,y,px,py,2);

Создание массивов данных для трехмерной графики - student2.ru

Slice

[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);

v = x.*exp(-x.^2-y.^2-z.^2);

xslice = [-1.2,.8,2]; yslice = 2; zslice = [-2,0];

slice(x,y,z,v,xslice,yslice,zslice)

colormap hsv

Создание массивов данных для трехмерной графики - student2.ru

D Surface Plots

>>graf3d

Наши рекомендации