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)