PROGRAM ACMTST C TEST PROGRAM FOR CACM ALGORITHM 475 C COMM ACM V17 NO3 PP152-155 (MARCH 1974) C C THE FOLLOWING PARAMETERS DETERMINE THE PICTURE SIZE C C LX=1+(NX-1)/NBPW, NBPW=NO OF BITS/WORD C ANUM1=FLOAT(NU-1) ETC., HNUP1=FLOAT(NU+1)/2. ETC. PARAMETER NU=50, NV=50, NW=50, NX=90, NY=90, LX=6, IU=1, * ANUM1=49., ANVM1=49., ANWM1=49., * HNUP1=25.5, HNVP1=25.5, HNWP1=25.5 C PEN COLOURS PARAMETER IBLACK=1, IRED=2, IGREEN=3, IBLUE=4 BYTE OBJECT DIMENSION EYE(3),ST1(NU,NV,2),IS2(LX,NY),OBJECT(NV,NW) CALL OPENPL(2,5,'ACMTEST.PLT',-1) CALL LIMITS(2.5,17.5,2.5,17.5) OPEN(UNIT=IU, ACCESS='SEQUENTIAL', FORM='UNFORMATTED', * NAME='SY:3D.TMP', TYPE='OLD', READONLY) EYE(1)=250. EYE(2)=150. EYE(3)=100. CALL INIT3D(1,EYE,NU,NV,NW,ST1,LX,NY,IS2,IU) DO 50 I=1,NU A=(I-31)**2 DO 40 J=1,NV C=(J-16)**2 D=IABS(J-39)+IABS(I-16) DO 30 K=1,NW OBJECT(J,K)=0 C FLOOR IF(K.EQ.1) OBJECT(J,K)=IRED C BALL IF(SQRT(A+C+(FLOAT(K)-16.)**2).LE.16.) * OBJECT(J,K)=IBLUE C POINT IF(D.LE.FLOAT(NW-K)*.1875) OBJECT(J,K)=IGREEN 30 CONTINUE 40 CONTINUE CALL DANDR(NV,NW,ST1,LX,NX,NY,IS2,IU,OBJECT) 50 CONTINUE D CALL DRAWAL D CALL FRAME C SECOND PICTURE. CALL INIT3D WITH MODE=2 TO CLEAR STORES D CALL INIT3D(2,EYE,NU,NV,NW,ST1,LX,NY,IS2,IU) D DO 120 I=1,NU D U=(HNUP1-FLOAT(I))/ANUM1 D UU=U*U D DO 110 J=1,NV D V=(FLOAT(J)-HNVP1)/ANVM1 D VV=V*V D A=1./SQRT(UU+VV) D DO 100 K=1,NW D IF(I*J.EQ.1 .OR. I*K.EQ.1 .OR. J*K.EQ.1) GOTO 80 D W=(FLOAT(K)-HNWP1)/ANWM1 D IF(1./SQRT(UU+VV+W*W)+(0.5-V)**2*A .LE. 4.) GOTO 90 D 80 OBJECT(J,K)=IBLACK D GOTO 100 D 90 OBJECT(J,K)=0 D 100 CONTINUE D 110 CONTINUE D CALL DANDR(NV,NW,ST1,LX,NX,NY,IS2,IU,OBJECT) D 120 CONTINUE CALL DRAWAL CALL GREND 999 STOP END