next up previous contents index
Next: SUBROUTINE VAX5D Up: MASTER Subroutines Previous: SUBROUTINE VAX3D

SUBROUTINE VAX3DX

   VAX3DX is a simple 3-d surface plotting routine. A 3-d surface is plotted by plotting slices through the surface which are parallel to the x-y plane. The y value of the surface at the intersection of the slice plane and the y value plotted. Hidden lines are supressed, giving the illusion of a 3 dimensional surface. The height of plotted surface relative to its y axis value is calibrated to x and z axis. No perspective is used. Options exist to varying the plotting angle and to plot axes.

Origin of the plot is in the lower-left corner. The x axis runs left to right along the plot bottom. The y axis is plotted as a vertical displacement offset by the z axis value. The z axis appears to point into the screen. This, with the hidden line removal, gives the illusion of depth.

VAX3DX contains an internal working storage arrays dimensioned sufficiently large for most sufaces. However, for very complex surfaces, the working storage buffer length may be exceeded. In this case an error message is written to the terminal and the routine terminated.

CALL VAX3DX(d,ndx,ndz,nx,nz,a,b,xh,yh,zh,iflag,iax,
               <xt,nxt,xs,xe,nmx,nnx,mlx,tsx,ndx,smx,
                yt,nyt,nmy,nny,mly,tsy,ndy,smy,
                zt,nzt,zs,ze,nmz,nnz,mlz,tsz,ndz,smz,
               <dm,dx<,ic>>>)

d        (R): array of y values dimensioned d(ndx,ndz)
ndx,ndz  (I): x and z dimensions of d array
nx,nz    (I): x and z sizes of surface to plot d array
a        (R): angle of x axis from horizontal 0-85 degrees
b        (R): angle of z axis from horizontal 0-90 degrees
              note: origin (1,1) is in lower-left corner
                    x axis runs left to right on screen
                    y axis runs up to down on screen
                    z axis appears to run into the screen but
                        is angled to the right
xh,yh,zh (R): length of each axis
iflag    (I): option flag
             < 0 : do not close LONGLIB after plotting
             = 0 : close LONGLIB--no plot produced
             > 0 : close LONGLIB after plotting
 (magnitude) >10000 : do not initialize LONGLIB before plotting
  (1's digit)  = 2 : use color array (need all parameters)
               = 1 : do not use color array
  (10's digit) = 0 : Plot sides
               = 1 : Do not plot sides
  (100's)      = 0 : Ask which screen device to use
              <> 0 : Screen Device Number (see FRAME)
iax   (I): axis format control
           < 0 : plot axes, use input scale factors dm and dx
           = 0 : no axes plotted, optional parameters (xt...dx) 
                 not used, scaling computed from input array
           > 0 : plot axes, use scaling computed from input array
                 only axis parameters xt through smz accessed.
 (1's digit)  = 1 : Plot actual max/min or input values for Y axis
              = 2 : Plot smoothed values for Y axis
 (10's digit) = 0 : Use default axis type
              = 1 : Use input AXIS2-type axis parameters
                     (nmx, nnx, mlx, tsx, ndx, etc.)
(NOTE: the following optional paramters are used if iax < 0 
       or mod(iflag,10)=1)
xt    (C): title of x axis (width)
nxt   (I): number of characters in xt
           = 0 : no axis plotted
           > 0 : normal
xs,xe (R): starting and ending values displayed on x axis
(see AXIS2 for detailed description of axis parameters)
nmx   (I): number of minor ticks between major ticks on x axis
nnx   (I): highlight length of nnx-th minor tick on x axis
mlx   (I): number of major tick marks on x axis
tsx   (R): size of title and numbers on x axis
           < 0 auto exponent scaling (x10 to power) disabled
           > 0 auto exponent scaling (x10 to power) enabled
ndx   (I): number of digits to right of decimal point on x axis
smx   (R): major tick length on x axis
yt    (C): title of y axis (depth)
nyt   (I): number of characters in yt
           = 0 : no y axis plotted
           > 0 : normal
nmy   (I): number of minor ticks between major ticks on y axis
nny   (I): highlight length of nny-th minor tick on y axis
mly   (I): number of major tick marks on y axis
tsy   (R): size of title and numbers on y axis
           < 0 auto exponent scaling (x10 to power) disabled
           > 0 auto exponent scaling (x10 to power) enabled
ndy   (I): number of digits to right of decimal point on y axis
smy   (R): major tick length on y axis
zt    (C): title of z axis (height)
nzt   (I): number of characters in zt
           = 0 : no z axis plotted
           > 0 : normal
ze,ze (R): starting and ending valued displayed on z axis
nmz   (I): number of minor ticks between major ticks on z axis
nnz   (I): highlight length of nnz-th minor tick on z axis
mlz   (I): number of major tick marks on z axis
tsz   (R): size of title and numbers on z axis
           < 0 auto exponent scaling (x10 to power) disabled
           > 0 auto exponent scaling (x10 to power) enabled
ndz   (I): number of digits to right of decimal point on z axis
smz   (R): major tick length on z axis
(NOTE: the following optional parameters are accessed only if
       iax < 0 or mod(iflag,10)=1)
dm,dx (R): minimum and maximum values of d array
(NOTE: color array accessed only if mod(iflag,10)=1)
ic    (I): color list
           ic(1) : color for axis lines
           ic(2) : color for axis numbers
           ic(3) : color for axis titles
           ic(4) : color for axis exponents
           ic(5) : color index for lower plot surface (return)
           ic(6) : color index for upper plot surface (return)



David Long
Wed Jun 12 10:34:11 MDT 1996