SUBROUTINE VISRS (Z1,ZE,Z2,NX,MX,NY,MY,TH,PL) C [ROTATED SEQUENCE] C ZE(J,I) ARRAY OF FUNCTION VALUES C (Z1,Z2) SPAN OF Z VALUES C NX,NY RANGES OF J AND I C MX,MY MAXIMA ATTAINABLE BY J AND I C TH ANGLE OF ROTATION (DEGREES, CLOCKWISE). C L DIRECTION OF VIEW (1=WEST, -1=EAST) C M DIRECTION OF VIEW (1=SOUTH, -1=NORTH) C PL PEN MOVEMENT SUBROUTINE C THE HORIZONTAL SCALE IS NOT ALWAYS CONSTANT, BUT IS ADJUSTED C SO THAT THE DRAWING WILL OCCUPY THE FULL BREADTH OF THE PAGE. C [19-DEC-74] EXTERNAL PL DIMENSION ZE(1),U(501),V(501) DATA M,MK,VF/1,501,0.333/ IX(J,I)=(I-1)*MX+J SC(Z)=ZS*(Z-Z1) IF (TH.LT.0.0) L=-1 IF (TH.GE.0.0) L= 1 N=L*M MM=1 SI=SIND(TH) CO=COSD(TH) EL=FLOAT(L) EM=FLOAT(M) ZS=(1.0-VF)/(Z2-Z1) SF=1.0/(ABS(CO)+ABS(SI)) U0=0.25*(EL+1.0)*(1.0-SF*(CO-SI)) V0=0.15*(EL-1.0)*SF*SI DUI=-(SF*SI)/FLOAT(MY-1) DUJ= (SF*CO)/FLOAT(MX-1) DVI= (VF*SF*CO)/FLOAT(MY-1) DVJ= (VF*SF*SI)/FLOAT(MX-1) I0=(NY+1-M*(NY-3))/2 J0=(NX+1-L*(NX-1))/2 K0=((MK+1)*(1-N))/2 10 K=K0 I=MAX0(MIN0(I0,NY+1),0) J=J0 EU=U0+DUI*FLOAT(I-1)+DUJ*FLOAT(J-1) VE=V0+DVI*FLOAT(I-1)+DVJ*FLOAT(J-1) 20 IF ((I.LT.1).OR.(I.GT.NY)) GO TO 22 K=MAX0(MIN0(K+N,MK),1) U(K)=EU V(K)=VE+SC(ZE(IX(J,I))) 22 I=I-M EU=EU-EM*DUI VE=VE-EM*DVI IF ((I.LT.1).OR.(I.GT.NY)) GO TO 30 K=MAX0(MIN0(K+N,MK),1) U(K)=EU V(K)=VE+SC(ZE(IX(J,I))) J=J+L EU=EU+EL*DUJ VE=VE+EL*DVJ IF ((J.GE.1).AND.(J.LE.NX)) GO TO 20 30 IF (L.GT.0) CALL VISHO (U,V,K,MM,PL) IF (L.LT.0) CALL VISHO (U(K),V(K),MK-K+1,MM,PL) MM=-MM I0=I0+M IF ((I0.GE.0).AND.(I0.LE.NY+1)) GO TO 10 J0=J0+L IF ((J0.GE.1).AND.(J0.LE.NX)) GO TO 10 RETURN END