## Documentation Center |

Plot velocity vectors as cones in 3-D vector field

`coneplot(X,Y,Z,U,V,W,Cx,Cy,Cz)coneplot(U,V,W,Cx,Cy,Cz)coneplot(...,s)coneplot(...,color)coneplot(...,'quiver')coneplot(...,'`

`coneplot(X,Y,Z,U,V,W,Cx,Cy,Cz)` plots velocity
vectors as cones pointing in the direction of the velocity vector
and having a length proportional to the magnitude of the velocity
vector. `X`, `Y`, `Z` define
the coordinates for the vector field. `U`, `V`, `W` define
the vector field. These arrays must be the same size, monotonic, and
represent a Cartesian, axis-aligned grid (such as the data produced
by `meshgrid`). `Cx`, `Cy`, `Cz` define
the location of the cones in the vector field. The section Specifying Starting Points for Stream Plots in Visualization
Techniques provides more information on defining starting points.

`coneplot(U,V,W,Cx,Cy,Cz)` (omitting
the `X`, `Y`, and `Z` arguments)
assumes `[X,Y,Z] = meshgrid(1:n,1:m,1:p)`, where `[m,n,p]=
size(U)`.

`coneplot(...,s)` automatically
scales the cones to fit the graph and then stretches them by the scale
factor `s`. If you do not specify a value for `s`, `coneplot` uses
a value of 1. Use `s = 0` to plot the cones without
automatic scaling.

`coneplot(...,color)` interpolates
the array `color` onto the vector field and then
colors the cones according to the interpolated values. The size of
the `color` array must be the same size as the `U`, `V`, `W` arrays.
This option works only with cones (that is, not with the `quiver` option).

`coneplot(...,'quiver')` draws
arrows instead of cones (see `quiver3` for
an illustration of a quiver plot).

`coneplot(...,'method')` specifies
the interpolation method to use.

`coneplot(X,Y,Z,U,V,W,'nointerp')` does
not interpolate the positions of the cones into the volume. The cones
are drawn at positions defined by `X`, `Y`, `Z` and
are oriented according to `U`, `V`, `W`.
Arrays `X`, `Y`, `Z`, `U`, `V`, `W` must
all be the same size.

`coneplot(axes_handle,...)` plots
into the axes with the handle `axes_handle` instead
of into the current axes (`gca`).

`h = coneplot(...)` returns
the handle to the `patch` object
used to draw the cones. You can use the `set` command
to change the properties of the
cones.

`coneplot` automatically scales the cones
to fit the graph, while keeping them in proportion to the respective
velocity vectors.

Plot the velocity vector cones for vector volume data representing the motion of air through a rectangular region of space:

Load the data. The `winds` data set contains
six 3-D arrays: `u`, `v`, and `w` specify
the vector components at each of the coordinates specified in `x`, `y`,
and `z`. The coordinates define a lattice grid structure
where the data is sampled within the volume. load wind.

`load wind`

Now establish the range of the data to place the slice planes
and to specify where you want the cone plots (`min`, `max`):

xmin = min(x(:)); xmax = max(x(:)); ymin = min(y(:)); ymax = max(y(:)); zmin = min(z(:));

Use `daspect` to set the
data aspect ratio of the axes before calling `coneplot`.

daspect([2,2,1])

Decide where in data space you want to plot cones. This example
selects the full range of `x` and `y` in
eight steps and the range 3 to 15 in four steps in `z` using `linspace` and `meshgrid`.

xrange = linspace(xmin,xmax,8); yrange = linspace(ymin,ymax,8); zrange = 3:4:15; [cx cy cz] = meshgrid(xrange,yrange,zrange);

Draw the cones, setting the scale factor to 5 to make the cones larger than the default size:

hcones = coneplot(x,y,z,u,v,w,cx,cy,cz,5);

Use the jet colormap:

`colormap jet`

Set the coloring of each cone using `FaceColor` and `EdgeColor`:

set(hcones,'FaceColor','red','EdgeColor','none')

Calculate the magnitude of the vector field (which represents
wind speed) to generate scalar data for the `slice` command:

```
hold on
wind_speed = sqrt(u.^2 + v.^2 + w.^2);
```

Create slice planes along the *x*-axis at `xmin` and `xmax`,
along the *y*-axis at `
ymax`, and along the *z*-axis at `zmin`:

hsurfaces = slice(x,y,z,wind_speed,[xmin,xmax],ymax,zmin);

Specify interpolated face color so the slice coloring indicates
wind speed, and do not draw edges (`hold`, `slice`, `FaceColor`, `EdgeColor`):

set(hsurfaces,'FaceColor','interp','EdgeColor','none') hold off

Use the `axis` command
to set the axis limits equal to the range of the data. axis tight.
Orient the `view` to azimuth
= 30 and elevation = 40. (`rotate3d` is a useful command for selecting
the best view.)

`view(30,40);axis off`

Select perspective projection to provide a more realistic looking
volume using `camproj`:

`camproj perspective;`

Zoom in on the scene a little to make the plot as large as possible
using `camzoom`:

camzoom(1.5)

The light source affects both the slice planes (surfaces) and the cone plots (patches). However, you can set the lighting characteristics of each independently.

Add a light source to the right of the camera and use Gouraud
lighting to give the cones and slice planes a smooth, three-dimensional
appearance using `camlight` and `lighting`:

camlight right; lighting gouraud

Increase the value of the `AmbientStrength` property
for each slice plane to improve the visibility of the dark blue colors:

`set(hsurfaces,'AmbientStrength',0.6)`

Increase the value of the `DiffuseStrength` property
of the cones to brighten particularly those cones not showing specular
reflections:

`set(hcones,'DiffuseStrength',0.8)`

`isosurface` | `patch` | `reducevolume` | `smooth3` | `stream2` | `stream3` | `streamline` | `subvolume`

Was this topic helpful?