SUBROUTINE KONSC (Z0,XF,YF,IA,IB,JA,JB,ZE,NX,NY,PL) C [SINGLE CONTOUR] C A GENERAL PURPOSE SUBROUTINE WHICH MAY BE USED TO GENERATE SIMPLE C CONTOURS, OR CONTOURS OF ORTHOGRAPHIC RELIEF. C Z0 CONTOUR LEVEL SOUGHT C (XF,YF) LIGHTING DIRECTION FOR ORTHOGRAPHIC RELIEF C (IA,IB) X-INTERVAL TO BE CONTOURED C (JA,JB) Y-INTERVAL TO BE CONTOURED C ZE(NX,NY) ARRAY OF FUNCTION VALUES C PL PEN MOVEMENT SUBROUTINE C [06-JAN-75] LOGICAL*1 FE(35,35,2) DIMENSION ZE(1) COMMON/KON/ I1,J1,I2,J2,I3,J3,Z1,Z2,Z3 U(I,J)=ZE(I+NX*(J-1))-Z0+XF*FLOAT(I-1)+YF*FLOAT(J-1) ZP(I1,I2)=FLOAT(I1-1)-Z1*(FLOAT(I2-I1)/(Z2-Z1)) IF ((IB-IA).GT.35) RETURN IF ((JB-JA).GT.35) RETURN XS=1.0/FLOAT(NX-1) YS=1.0/FLOAT(NY-1) II=MAX0(IA,IB-1) JJ=MAX0(JA,JB-1) DO 10 I=IA,II DO 10 J=JA,JJ Z11=U(I,J) Z12=U(I,J+1) Z21=U(I+1,J) Z22=U(I+1,J+1) ZP1=AMAX1(Z11,Z12,Z21) ZM1=AMIN1(Z11,Z12,Z21) ZP2=AMAX1(Z12,Z21,Z22) ZM2=AMIN1(Z12,Z21,Z22) FE(I-IA+1,J-JA+1,1)=(ZP1.LT.0.0).OR.(ZM1.GT.0.0) 10 FE(I-IA+1,J-JA+1,2)=(ZP2.LT.0.0).OR.(ZM2.GT.0.0) DO 40 K=1,2 DO 40 I=IA,II DO 40 J=JA,JJ IF (FE(I-IA+1,J-JA+1,K)) GO TO 40 CALL KONIT (I,J,K) Z1=U(I1,J1) Z2=U(I2,J2) Z3=U(I3,J3) IF (SIGN(1.0,Z1).EQ.SIGN(1.0,Z2)) CALL KONXV (1,3) IF (SIGN(1.0,Z1).EQ.SIGN(1.0,Z3)) CALL KONXV (1,2) CALL KONSA DO 30 L=1,2 CALL PL (XS*ZP(I1,I2),YS*ZP(J1,J2),.FALSE.) 20 CALL KONNC CALL PL (XS*ZP(I1,I2),YS*ZP(J1,J2),.TRUE.) I0=MIN0(I1,I2,I3)-IA+1 J0=MIN0(J1,J2,J3)-JA+1 K0=MOD(I1+I2+I3,3) IF (FE(I0,J0,K0)) GO TO 30 FE(I0,J0,K0)=.TRUE. IF ((I3.LT.IA).OR.(I3.GT.IB).OR.(J3.LT.JA).OR.(J3.GT.JB)) GO TO 30 Z3=U(I3,J3) GO TO 20 30 CALL KONRE 40 CONTINUE RETURN END