SUBROUTINE VISSS (FU,J1,J2,NP,I1,I2,NT,L,M,S,B,O,PR,PL) C [SPHERICAL SEQUENCE] C FU(NP,NT) ARRAY OF FUNCTION VALUES C (J1,J2) INTERVAL OF PHI INDICES TO BE GRAPHED C (I1,I2) INTERVAL OF THETA INDICES TO BE GRAPHED C L= 1 WESTERN VIEW, L=-1 EASTERN VIEW C M= 1 SOUTHERN VIEW, M=-1 NORTHERN VIEW C B= (ATAN2 CUT LINE DOES NOT FALL IN QUADRANT BEING GRAPHED) C O(3,3) ORTHOGONAL ROTATION MATRIX C PR PROJECTION SUBROUTINE C PL PEN MOVEMENT SUBROUTINE C [22-NOV-74] EXTERNAL PL LOGICAL*1 B DIMENSION FU(1),O(3,3) DIMENSION AZ(501),RA(501),OR(501) DATA MK/501/ TAN(X)=SIN(X)/COS(X) IX(J,I)=(I-1)*NP+MOD(NP+J-1,NP)+1 ZP(X1,Y1,X2,Y2)=X1-Y1*((X2-X1)/(Y2-Y1)) WH(T,P)=S*SIGN(1.0,1.57079-T)*(TAN(T)-TN*COS(P-PH)) N=L*M NN=1 EL=FLOAT(L) EM=FLOAT(M) DP=6.28/FLOAT(NP) DT=3.14/FLOAT(NT) CALL VISNP (PH,TH,JP,IT,NP,NT,O) TN=TAN(TH) I0=((I1+I2)+M*(I1-I2))/2+M J0=((J1+J2)+L*(J1-J2))/2 K0=((MK+1)*(1-N))/2 10 K=K0 I=MAX0(MIN0(I0,I2+1),I1-1) J=J0 T=TH+DT*FLOAT(I-IT) P=PH+DP*FLOAT(J-JP) 20 IF ((I.GT.I2).OR.(I.LT.I1)) GO TO 22 K=MAX0(MIN0(K+N,MK),1) CALL PR (RA(K),AZ(K),FU(IX(J,I)),T,P,O) OR(K)=WH(T,P) 22 I=I-M T=T-EM*DT IF ((I.GT.I2).OR.(I.LT.I1)) GO TO 30 K=MAX0(MIN0(K+N,MK),1) CALL PR (RA(K),AZ(K),FU(IX(J,I)),T,P,O) OR(K)=WH(T,P) J=J+L P=P+EL*DP IF ((J.LE.J2).AND.(J.GE.J1)) GO TO 20 30 IF (N.GT.0) GO TO 32 M1=MK-K+1 DO 31 MM=1,M1 AZ(MM)=AZ(K+MM-1) RA(MM)=RA(K+MM-1) 31 OR(MM)=OR(K+MM-1) K=M1 32 IF (K.LE.1) GO TO 50 IF (B) GO TO 36 DO 35 MM=1,K 35 IF (AZ(MM).LT.0.0) AZ(MM)=AZ(MM)+1.0 36 IF (AZ(1).LE.AZ(K)) GO TO 38 DO 37 MM=1,K T1=AZ(MM) T2=RA(MM) T3=OR(MM) AZ(MM)=AZ(K-MM+1) RA(MM)=RA(K-MM+1) OR(MM)=OR(K-MM+1) AZ(K-MM+1)=T1 RA(K-MM+1)=T2 37 OR(K-MM+1)=T3 38 K1=0 40 K1=K1+1 IF (K1.GE.K) GO TO 50 IF (OR(K1).GT.0.0) GO TO 40 K2=K1 IF (K1.LE.1) GO TO 41 K1=K1-1 AZ(K1)=ZP(AZ(K1),OR(K1),AZ(K1+1),OR(K1+1)) RA(K1)=ZP(RA(K1),OR(K1),RA(K1+1),OR(K1+1)) 41 IF (K2.GT.K) GO TO 43 IF (OR(K2).GT.0.0) GO TO 42 K2=K2+1 GO TO 41 42 IF (K2.GT.K) GO TO 43 AZ(K2)=ZP(AZ(K2),OR(K2),AZ(K2-1),OR(K2-1)) RA(K2)=ZP(RA(K2),OR(K2),RA(K2-1),OR(K2-1)) K2=K2+1 43 IF (K2-K1.LT.2) GO TO 44 IF (AZ(K1).GE.AZ(K1+1)) AZ(K1)=AZ(K1+1)-0.0025 IF (AZ(K2-1).LE.AZ(K2-2)) AZ(K2-1)=AZ(K2-2)+0.0025 44 IF (K2-K1.GT.1) CALL VISHO (AZ(K1),RA(K1),K2-K1,NN,PL) K1=K2 GO TO 40 50 NN=-NN I0=I0+M IF ((I0.GE.I1-1).AND.(I0.LE.I2+1)) GO TO 10 J0=J0+L IF ((J0.GE.J1).AND.(J0.LE.J2)) GO TO 10 RETURN END