BYTE OBJECT DIMENSION EYE(3),ST1(10,10,2),IS2(3,20),OBJECT(10,10) CALL OPENPL(2,5,'3DTEST1.PLT',-1) CALL LIMITS(2.5,17.5,2.5,17.5) CALL CRSIZE(0.4) EYE(1)=50. EYE(2)=40. EYE(3)=30. LX=3 NU=10 NV=10 NW=10 NX=20 NY=20 NVNW=NV*NW IU=1 OPEN(UNIT=IU, ACCESS='SEQUENTIAL', FORM='UNFORMATTED', * NAME='SY:3D.TMP', TYPE='SCRATCH') CALL INIT3D(0,EYE,NU,NV,NW,ST1,LX,NY,IS2,IU) C DRAW A RED BOX 6X4X3 IN MIDDLE OF REGION, WITH A BLACK FLOOR. CALL BCLEAR(OBJECT,NVNW) DO 50 K=1,NW 50 OBJECT(K,1)=1 DO 100 I=1,2 CALL DANDR(NV,NW,ST1,LX,NX,NY,IS2,IU,OBJECT) 100 CONTINUE DO 200 K=4,6 DO 200 J=3,7 200 OBJECT(J,K)=2 TYPE 1000,((OBJECT(J,K),J=1,NV),K=NW,1,-1) 1000 FORMAT(10(X,I1)) DO 300 I=3,8 CALL DANDR(NV,NW,ST1,LX,NX,NY,IS2,IU,OBJECT) 300 CONTINUE CALL BCLEAR(OBJECT,NVNW) DO 350 K=1,NW 350 OBJECT(K,1)=1 DO 400 I=9,10 CALL DANDR(NV,NW,ST1,LX,NX,NY,IS2,IU,OBJECT) 400 CONTINUE C DRAW AXES WITHOUT LABELLING D CALL AX3D(0.,1.,0.,1.,0.,1.,NU,NV,NW,1) D CALL FRAME C RE-INITIALISE D CALL INIT3D(2,EYE,NU,NV,NW,ST1,LX,NY,IS2,IU) C DRAW A VERTICAL HOLLOW CYLINDER: C OUTER RADIUS 4 UNITS C INNER RADIUS 2 UNITS C HEIGHT 3 UNITS D DO 500 I=1,NU D CALL BCLEAR(OBJECT,NVNW) D DO 600 K=4,6 D DO 600 J=1,NV D ID=(I-5)**2+(J-5)**2 D IF(ID.LE.16 .AND. ID.GE.4) OBJECT(J,K)=1 D 600 CONTINUE D TYPE 1000,((OBJECT(J,K),J=1,NV),K=NW,1,-1) D CALL DANDR(NV,NW,ST1,LX,NX,NY,IS2,IU,OBJECT) D 500 CONTINUE C DRAW AND LABEL THE AXES D CALL AX3D(0.,1.,0.,1.,0.,1.,NU,NV,NW,-2) CALL GREND STOP END