next up previous contents index
Next: FUNCTION ICTERM Up: Description of Plotting Previous: SUBROUTINE HISTON

SUBROUTINE HLT3D

     HLT3D plots a 2 dimensional array to produce a 2-d histogram similar to PLT3D. Hidden lines are supressed. Transformation from the array indices (i,j) to (x,y,z) is:

    x = xl * .5 * float(2*j-n-1)/float(n-1)
    y = yl * .5 * float(2*i-m-1)/float(m-1)
    z = zs * (a(i,j) + z0)

Thus,

    (1,1) is (-xl/2,-yl/2)   (m,1) is (-xl/2,+yl/2)
    (1,n) is (+xl/2,-yl/2)   (m,n) is (+xl/2,+yl/2)

    xplotted = x*cos(az) - y*sin(az) + x0
    yplotted = x*sin(az)*sin(al) + y*sin(az)*sin(al) + z*cos(al) + y0

The common block  PLT3B returns these  transformation parameters so that the plotted location (xp,yp) of the corner of the cube corresponding to the point (i,j,zr) may be computed as:

        xp = a1 * j + a2 * i + a3
        yp = b1 * j + b2 * i + b3 * zr + b4

The dimension of the working array is dependent on the surface complexity -- the greater the surface complexity, the greater l2 must be. As a minimum, l2 > 4*min(m,n). See also  NXTVU and PLT3D.  

CALL HLT3D (a,md,nd,m,n,w,l,w2,l2,al,az,xl,x0,yl,y0,zs,z0,ierr)

a     (R): array of values to be plotted dimensioned a(md,nd)
md,nd (I): array dimensions
m,n   (I): size of data in array to be plotted
w     (R): dummy variable so that call is compatible with PLT3D
l     (I): dummy variable so that call is compatible with PLT3D
w2    (R): working storage array dimensioned w2(l2)
l2    (I): working storage array dimension (see note)
al    (R): viewing altitude angle (deg)
az    (R): viewing azimuth angle (deg)
xl,yl (R): length of unprojected axes in plot units
x0,y0 (R): plot origin in plot units
zs    (R): z coordinate scale factor
z0    (R): z coordinate offset
ierr  (I): (returned) error code
           = 0 : ok
           = 1 : l2 not large enough in NXTVU

COMMON /PLT3B/ a1,a2,a3,b1,b2,b3,b4



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