Scilab Function contour - level curves on a 3D surface
Calling Sequence
- contour(x,y,z,nz,[theta,alpha,leg,flag,ebox,zlev])
- contour(x,y,z,nz,<opt_args>)
Parameters
- x,y
: two real row vectors of size n1 and n2.
- z
: real matrix of size (n1,n2), the values of the function.
- nz
: the level values or the number of levels.
- -
If nz is an integer, its value gives the number of level curves equally spaced from zmin to zmax as follows:
z= zmin + (1:nz)*(zmax-zmin)/(nz+1)
Note that the zmin and zmax levels are not drawn (generically they are reduced to points) but they can be added with
[im,jm] = find(z == zmin); // or zmax
plot2d(x(im)',y(jm)',-9,"000")
-
If nz is a vector, nz(i) gives the value of the ith level curve. Note that it can be useful in order to see zmin and zmax level curves to add an epsilon tolerance: nz=[ zmin+%eps,..,zmax-%eps].
<opt_args>
: a sequence of statements key1=value1, key2=value2, ... where keys may be theta,alpha,leg, flag, ebox,zlev (see below). In this case, the order has no special meaning.
theta, alpha
: real values giving in degree the spherical coordinates of the observation point.
leg
: string defining the captions for each axis with @ as a field separator, for example "X@Y@Z".
flag
: a real vector of size three flag=[mode,type,box].
- mode
: string (treatment of hidden parts).
- mode>0
the hidden parts of the surface are removed and the surface is painted with color mode.
- mode=0
the hidden parts of the surface are drawn.
- mode<0
only the shadow of the surface is painted with color or pattern id -mode. Use xset() to see the meaning of the ids.
- type
: an integer (scaling).
- type=0
the plot is made using the current 3D scaling (set by a previous call to param3d, plot3d, contour or plot3d1).
- type=1
rescales automatically 3d boxes with extreme aspect ratios, the boundaries are specified by the value of the optional argument ebox.
- type=2
rescales automatically 3d boxes with extreme aspect ratios, the boundaries are computed using the given data.
- type=3
3d isometric with box bounds given by optional ebox, similarily to type=1
- type=4
3d isometric bounds derived from the data, to similarilytype=2
- type=5
3d expanded isometric bounds with box bounds given by optional ebox, similarily to type=1
- type=6
3d expanded isometric bounds derived from the data, similarily to type=2
- box
: an integer (frame around the plot).
- box=0
nothing is drawn around the plot.
- box=1
unimplemented (like box=0).
- box=2
only the axes behind the surface are drawn.
- box=3
a box surrounding the surface is drawn and captions are added.
- box=4
a box surrounding the surface is drawn, captions and axes are added.
ebox
: used when type in flag is 1. It specifies the boundaries of the plot as the vector [xmin,xmax,ymin,ymax,zmin,zmax].
zlev
: real number.
Description
contour draws level curves of a surface z=f(x,y). The level curves are
drawn on a 3D surface. The optional arguments are the same as for the function
plot3d (except zlev) and their meanings are the same.
They control the drawing of level curves on a 3D plot.
Only flag(1)=mode has a special meaning.
mode=0
: the level curves are drawn on the surface defined by (x,y,z).
mode=1
: the level curves are drawn on a 3D plot and on the plan defined by the equation z=zlev.
mode=2
: the level curves are drawn on a 2D plot.
You can change the format of the floating point number printed on the levels
by using xset("fpf",string) where string gives the
format in C format syntax (for example string="%.3f"). Use
string="" to switch back to default format and Use
string=" " to suppress printing.
Usually we use contour2d to draw levels curves on a 2D plot.
Enter the command contour() to see a demo.
Examples
t=%pi*[-10:10]/10;
deff("[z]=surf(x,y)","z=sin(x)*cos(y)"); z=feval(t,t,surf);
rect=[-%pi,%pi,-%pi,%pi,-1,1];
contour(t,t,z,10,35,45," ",[0,1,0],rect)
// changing the format of the printing of the levels
xset("fpf","%.2f")
xbasc()
contour(t,t,z,10,flag=[0,1,0],ebox=rect)
See Also
Author