MATLAB^{®} defines a surface by the *z*-coordinates
of points above a grid in the *x*-*y* plane,
using straight lines to connect adjacent points. The `mesh`

and `surf`

functions
display surfaces in three dimensions.

`mesh`

produces wireframe surfaces that color only the lines connecting the defining points.`surf`

displays both the connecting lines and the faces of the surface in color.

MATLAB colors surfaces by mapping z-data values to indexes into the figure colormap.

To display a function of two variables, *z* = *f *(*x*,*y*),

Generate

`X`

and`Y`

matrices consisting of repeated rows and columns, respectively, over the domain of the function.Use

`X`

and`Y`

to evaluate and graph the function.

The `meshgrid`

function
transforms the domain specified by a single vector or two vectors `x`

and `y`

into
matrices `X`

and `Y`

for use in
evaluating functions of two variables. The rows of `X`

are
copies of the vector `x`

and the columns of `Y`

are
copies of the vector `y`

.

This example shows how to evaluate and graph the two-dimensional `sinc`

function, sin( *r* )/ *r* , between the *x* and *y* directions. `R`

is the distance from the origin, which is at the center of the matrix. Adding `eps`

(a very small value) prevents a hole in the mesh at the point where `R = 0`

.

[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; mesh(X,Y,Z)

By default, MATLAB uses the current colormap to color the mesh.

This example shows how to graph the `sinc`

function as a surface plot, specify a colormap, and add a color bar to show the mapping of data to color.

A surface plot is similar to a mesh plot except that the rectangular faces of the surface are colored. The color of each face is determined by the values of `Z`

and the colormap (a colormap is an ordered list of colors).

```
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z)
colormap hsv
colorbar
```

This example shows how you can make the faces of a surface transparent to a varying degree. Transparency (referred to as the alpha value) can be specified for the whole object or can be based on an `alphamap`

, which behaves similarly to colormaps.

```
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z)
colormap hsv
alpha(.4)
```

MATLAB displays a surface with a face alpha value of 0.4. Alpha values range from 0 (completely transparent) to 1 (not transparent).

This example shows the same surface as the previous examples, but colors it red and removes the mesh lines. A light object is then added to the left of the "camera" (the camera is the location in space from where you are viewing the surface).

[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; surf(X,Y,Z,'FaceColor','red','EdgeColor','none') camlight left; lighting phong

Lighting is the technique of illuminating an object with a directional light source. In certain cases, this technique can make subtle differences in surface shape easier to see. Lighting can also be used to add realism to three-dimensional graphs.

The figure toolbar and the camera toolbar provide ways to explore
three-dimensional graphics interactively. Display the camera toolbar
by selecting **Camera Toolbar** from the figure **View** menu.

The following picture shows both toolbars with the **Rotate
3D** tool selected.

These tools enable you to move the camera around the surface object, zoom, add lighting, and perform other viewing operations without issuing commands.

Was this topic helpful?