Previous: visss Up: ../plot79_v.html Next: vists


VISTR

       SUBROUTINE  VISTR (Z0, Z1,S1,S2,S3,Z2, MX,MY, NX,NY, LX,LY, S,
      X                   T, SEP, PL2)
 C$    (Triple Surface)
 C$    Make a hidden-line drawing  of three possibly  intersecting
 C$    surfaces, hiding  those parts  of  each surface  which  are
 C$    covered by the others.
 C$
 C$    Z0..........Cutoff value.  Only function values, S*(I,J),
 C$                above (S .GT. 0.0) or  below (S .LT. 0) Z0  are
 C$                visible.
 C$    S1,S2,S3....Arrays containing the three surfaces.  S*(I,J)
 C$                = F(X(I),Y(J)), where X(I) = (I-1)*DX and Y(J)
 C$                = (J-1)*DY both map onto the interval 0..1.
 C$    Z1,Z2.......Span of surface values.
 C$    MX,MY.......Actual declared dimensions of the arrays
 C$                S1(*,*), S2(*,*), and S3(*,*).
 C$    NX,NY.......Sections of S1(*,*), S2(*,*), and S3(*,*)
 C$                actually used.
 C$    LX,LY.......Increments in X and Y directions (.GT. 0).
 C$                Values of LX  and LY  larger than  1 produce  a
 C$                coarser mesh on the drawing without losing  the
 C$                smoothness of the complete surface.  LX  should
 C$                be an integral divisor of NX-1, and LY of NY-1.
 C$                If this  is not  the  case, the  next  smallest
 C$                value which satisfies this requirement is  used
 C$                internally.
 C$    S...........=+1.0, graph positive part of function,
 C$                =-1.0, graph negative part of function,
 C$                = 0.0, graph both positive and negative parts.
 C$                If S = 0.0, the cutoff value Z0 has no effect.
 C$    T(4,4)......4-D transformation matrix  defining orientation
 C$                of the surfaces.  The  window coordinates of  a
 C$                point (X,Y,Z,1.0) are  (U,V,W,H) =  (X,Y,Z,1.0)
 C$                T.  X, Y, and Z are computed in the range 0..1,
 C$                and Z is obtained  from the function values  by
 C$                scaling the range  Z1..Z2 onto  0..1.  A  point
 C$                (U,V,W,H) is Visible If  U/H, V/H, and W/H  lie
 C$                in the range 0..1.
 C$    SEP.........Separation option (.TRUE. = yes, .FALSE. = no).
 C$                When separation is requested, the upper horizon
 C$                is elevated  from the  lower horizon,  and  the
 C$                vertical   and   horizontal   coordinates   are
 C$                rescaled to maintain correct proportions.   The
 C$                scale factor is 1-abs(T(2,2)), and best results
 C$                are  obtained   when   T(2,2)   lies   in   the
 C$                approximate range -0.4..+0.4.
 C$    PL2.........2-D pen movement subroutine
 C$    (01-FEB-82)