SUBROUTINE SHADE(IX,IY,ISIZE) C C SUBROUTINE TO PRODUCE SHADED PICTURE (SIMILAR TO VERSATEC TONE) C C IX,IY = ARRAY OF COORDINATES FORMING A CLOSED POLYGON C ISIZE = NUMBER OF POINTS C INTEGER IY(ISIZE),IX(ISIZE),IA(50),IC(50) MIN = 1023 !SET UP TO FIND MIN,MAX MAX = 0 DO 10 J = 1,ISIZE !SEARCH THRU ALL POINTS ITEMP = IX(J) IF(ITEMP .LT. MIN) MIN = ITEMP IF(ITEMP .GT. MAX) MAX = ITEMP 10 CONTINUE IF(MIN .LT. 0) MIN = 0 !LOWEST X VALUE IS 0 IF(MAX .GT. 1023)MAX = 1023 !LARGEST IS 1023 DO 100 IXP = MIN,MAX,2 !SHADE OVER ALL VALUES ISZ = 0 !WILL BE # OF SEGMENTS ITEMP = 0 DO 80 J = 1,ISIZE !LOOK FOR HORIZ. BOUNDARIES K = J + 1 !J,K DEFINE PT. # AT ENDS OF LINES IF(K .GT. ISIZE) K = 1 !FIRST,LAST POINT JOIN IF(IXP .GE. IX(J) .AND. IXP .LT. IX(K)) GO TO 40 IF(IXP .LT. IX(J) .AND. IXP .GE. IX(K)) GO TO 40 GO TO 80 !NO HORIZANTAL SEGMENT FOUND, DONE 40 TEMP = IX(K) - IX(J) IF(TEMP .EQ. 0.) GO TO 50 TEMP = (IY(K) - IY(J))/TEMP 50 TEMP = IY(J) + (IXP - IX(J)) * TEMP IF(TEMP .LT. 0.)TEMP = 0. !MINIMUM Y VALUE IS 0 IF(TEMP .GT. 779.)TEMP = 779. !MAXIMUM IS 779. ISZ = ISZ + 1 !NUMBER OF BOUNDARIES FOUND IA(ISZ) = TEMP !Y BOUNDARIES IF(ISZ .EQ. 50) GO TO 81 !DONE 80 CONTINUE 81 DO 85 I = 1,ISZ !PUT Y VALUES INTO ASCENDING ORDER IC(I) = IXP DO 85 J = I,ISZ IF(IA(J) .GE. IA(I)) GO TO 85 !IF LOWER INDEX VALUE NOT SMALLER K = IA(J) !SWAP THEM IA(J) = IA(I) IA(I) = K 85 CONTINUE DO 90 I = 1,ISZ,2 !PLOT ALL SEGMENTS 90 IA(I) = -IA(I) !2 POINT SEGMENTS CALL VECT(IC,IA,-2) !PLOT THE SEGMENTS 100 CONTINUE RETURN ENTRY BOXIT(IX1,IY1,IX2,IY2) C C SUBROUTINE TO MAKE A RECTANGULAR OUTLINE C IXP = IX1 ITEST = 1 DO 200 II = IX1,IX2,20 MAX = IX2 - II + 2 IF(MAX .GT. 20) MAX = 20 DO 190 I = 1,MAX,2 IA(I) = IXP IA(I+1) = IXP IC(I) = IY1 IC(I+1) = IY2 IF(ITEST .GT. 0)GO TO 180 IC(I) = IY2 IC(I+1) = IY1 180 ITEST = -ITEST 190 IXP = IXP + 2 CALL VECT(IA,IC,-MAX) 200 CONTINUE RETURN END