Previous: visss Up: ../plot79_v.html Next: vists
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)