# channelflow.org

### Site Tools

gibson:teaching:fall-2014:math445:lecture16-diary

# Math 445: 3D graphics

Matlab vocabulary

• meshgrid
• pcolor
• contour, contourf
• surf, surfc
• quiver
• shading (flat, faceted, or interp)
• colorbar
• axis (equal, tight)

## meshgrid:

The meshgrid function is essential for Matlab's 3D graphics. Meshgrid creates 2D arrays of x,y data covering the x,y, plane, over which a function can be evaluated and graphed. Example:

>> x = linspace(-2,2,5)

x =
-2    -1     0     1     2

>> y = linspace(-3,3,7)

y =
-3    -2    -1     0     1     2     3

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

X =
-2    -1     0     1     2
-2    -1     0     1     2
-2    -1     0     1     2
-2    -1     0     1     2
-2    -1     0     1     2
-2    -1     0     1     2
-2    -1     0     1     2

Y =
-3    -3    -3    -3    -3
-2    -2    -2    -2    -2
-1    -1    -1    -1    -1
0     0     0     0     0
1     1     1     1     1
2     2     2     2     2
3     3     3     3     3

It is conventional to use capital letters (X,Y) for the matrix output of meshgrid from small letter (x,y) vector inputs. Observe how the output matrices X varies left to right, along the x axis, and Y varies up and down, along the y axis. Together they provide x,y, coordinates for a grid of points on the x,y plane in the region , .

We can then evaluate a function over that 2D array via elementwise matrix operations. For example, this Matlab code would evaluate

Z = X.^2 + Y.^2

## pcolor: pseudocolor plot

The pcolor function produces a pseudocolor or checkerboard plot of Z as a function of x,y.

pcolor(X,Y,Z)
colorbar
axis equal
axis tight
xlabel('x'); ylabel('y'); title('z = x^2 + y^2')

You can modify the appearance of the pseudocolor with the shading command. Try shading flat, shading interp, and shading faceted.

## contour, contourf

The contour function plots contours or level curves of z=f(x,y). That is, it plots curves on which f(x,y) is constant.

[X,Y] = meshgrid(x,y);
Z = X.^2 + Y.^2;
contour(X,Y,Z)
xlabel('x'); ylabel('y'); title('z= x^2 + y^2')
colorbar
axis equal
axis tight

As you can see, the level curves of are circles .

contourf is the same as contour, except that the regions between contour lines are filled with color.

## surf, surfc

The previous plots were all looking straight down at the (x,y) plane, with the value of z = f(x,y) encoded as a color. The surf function will plot z = f(x,y) in 3D, as a surface of height z over the (x,y) plane.

surf(X,Y,Z) % draw z=f(x,y) as a surface over x,y
xlabel('x'); ylabel('y'); zlabel('z')
axis equal; axis tight

It's also possible to draw more complicated surfaces (surfaces that are not simple graphs of the form ). Here's an example of how to draw a sphere by parameterizing its surface in terms of angles and .

% make mesh over theta, phi
theta = linspace(0,2*pi,50); % angle between x and y
phi   = linspace(0,pi,25);   % angle down from z axis

[Theta, Phi] = meshgrid(theta, phi); % form 2D mesh in theta, phi

% Parameterize surface of sphere in terms of theta, phi
% (note that x^2 + y^2 + z^2 = 1)
X = cos(Theta).*sin(Phi);
Y = sin(Theta).*sin(Phi);
Z = cos(Phi);

% Draw parametrized surface of sphere with surf
surf(X,Y,Z); axis equal
xlabel('x'); ylabel('y'); zlabel('z')
axis equal
gibson/teaching/fall-2014/math445/lecture16-diary.txt · Last modified: 2014/11/18 07:25 by gibson