PROGRAM TEST C THIS IS A DRIVER PROGRAM TO DEMONSTRATE C THE USE OF THE 3-D PLOTTING ROUTINES FOR C THE ZETA PLOTTER DIMENSION X(361),Y(361),Z(361),ZERO(361) OPEN(UNIT=1,NAME='TEST.PLT',TYPE='NEW') C INIT THE ZETA PLOTTING ROUTINES CALL PLOTS(53,0,1) C FIRST EXAMPLE IS A PAIR OF ELLIPSIODS C FOR THE FIRST SET-A SERIES OF ELLIPSES WITH CENTERS ALONG C THE DECREASING Z-AXIS C INIT THE 3-D PLOT CALL NEWPEN(2) CALL BOX3D(0.,0.,11.,8.5) CALL SCL3D(4.,4.,4.,2.,2.,2.,-2.,-2.,-2.) CALL ROT3D(-45.,0.) CALL MASK3D(0) C CALCULATE THE ELLIPSE PARAMETERS DO 1 I=1,51 ZP=(FLOAT(I)-26.)/25. F=SQRT(1.-ZP*ZP) A=2.*F B=F DO 2 J=1,361 ANG=FLOAT(J-1)*3.141592654/180. X(J)=A*COS(ANG) Y(J)=B*SIN(ANG) Z(J)=ZP 2 CONTINUE C DRAW CURRENT ELLIPSE CALL LINE3D(X,Y,Z,361) 1 CONTINUE C FIRST PLOT COMPLETED CALL FIN3D CALL ORIGIN(8.5,0.,1) C DRAW NEXT SET OF LINES OF ELLIPSOID C ONLY AS CIRCLES WITH CENTERS ALONG THE INCREASING X AXIS C INIT THE 3-DPLOT CALL BOX3D(0.,0.,11.,8.5) CALL SCL3D(4.,4.,4.,2.,2.,2.,-2.,-2.,-2.) CALL ROT3D(-45.,0.) CALL MASK3D(0) CALL NEWPEN(4) C CALCULATE CIRCLE PARAMETERS DO 11 I=1,51 XP=(FLOAT(I)-26.)/12.5 R=SQRT(1.-XP*XP/4.) DO 12 J=1,361 C CALCULATE CIRCLE POINTS ANG=FLOAT(J-1)*3.141592654/180. X(J)=XP Y(J)=R*SIN(ANG) Z(J)=R*COS(ANG) 12 CONTINUE C PLOT CURRENT CIRCLE CALL LINE3D(X,Y,Z,361) 11 CONTINUE C PLOT COMPLETED-TERMINATE 3-D PLOT AND ADVANCE TO NEXT PAGE CALL FIN3D CALL ORIGIN(8.5,0.,1) C PLOT TOROID AS SECOND 3-D PLOT C DO THE 3-D ROUTINES INITALIZATION CALL NEWPEN(3) CALL BOX3D(0.,0.,11.,8.5) CALL SCL3D(6.,6.,6.,4.,4.,4.,-4.,-4.,-4.) CALL ROT3D(0.,15.) CALL MASK3D(0) C CALCULATE AND PLOT THE TOROID DO 21 I=1,181 ANG1=FLOAT(I-1)*3.141592654/180. DO 22 J=1,2 X0=2.*SIN(ANG1) Z0=2.*COS(ANG1) DO 23 K=1,181 ANG2=-FLOAT(K-1)*3.141592654/180. Y1=1.+SIN(ANG2) X1=1.+COS(ANG2) Y(K)=Y1 X(K)=X1*SIN(ANG1)+X0 Z(K)=X1*COS(ANG1)+Z0 23 CONTINUE CALL LINE3D(X,Y,Z,181) DO 24 K=1,181 ANG2=FLOAT(K-1)*3.141592654/180. Y1=1.+SIN(ANG2) X1=1.+COS(ANG2) Y(K)=Y1 X(K)=X1*SIN(ANG1)+X0 Z(K)=X1*COS(ANG1)+Z0 24 CONTINUE CALL LINE3D(X,Y,Z,181) ANG1=-ANG1 22 CONTINUE 21 CONTINUE C TOROID COMPLETED-CLOSE DOWN 3-D PLOT ROUTINES AND ADVANCE TO NEXT PAGE CALL FIN3D CALL ORIGIN(8.5,0.,1) C PLOT 3-D SIN(X)/X WITH QUADRENT REMOVED C INIT 3-D ROUTINES CALL NEWPEN(4) CALL BOX3D(0.,0.,11.,8.5) CALL SCL3D(4.,4.,4.,2.,1.,2.,-2.,-1.,-2.) CALL ROT3D(-45.,45.) CALL MASK3D(0) C CALCULATED SIN(X)/X LINE DO 31 I=1,201 ZP=(101.-I)/50. DO 32 J=1,201 XP=(J-101.)/50. R=SQRT(XP*XP+ZP*ZP) YP=1. IF(R.NE.0.)YP=SIN(10.*R)/(10.*R) X(J)=XP Y(J)=YP Z(J)=ZP 32 CONTINUE K=201 IF(ZP.GT.0.)K=101 CALL LINE3D(X,Y,Z,K) 31 CONTINUE C PLOT COMPLETE-CLOSE DOWN 3-D ROUTIES CALL FIN3D CALL ORIGIN(8.5,0.,1) C THE FINAL 3-D PLOT IS OF A HELIX ALONG THE X-AXIS COMPLETE C WITH PROJECTIONS ON XY,XZ & YZ PLANES, MARKERS AT SELECTED C LOCATIONS AND CONNECTORS AT THE MARKERS TO THE XZ PLANE C C CALCULATE THE POINTS ALONG THE HELIX PATH 50 DO 51 I=1,240 X(I)=(I-1)/10. ANG=(I-1)/30. Y(I)=SIN(ANG) Z(I)=COS(ANG) 51 CONTINUE C INIT THE 3-D ROUTINES CALL BOX3D(1.5,1.,10.,7.) CALL SCL3D(6.,3.,3.,24.,1.,1.,0.,-1.,-1.) CALL ROT3D(30.,25.) CALL MASK3D(-1) C DRAW THE AXIS CALL NEWPEN(2) CALL AXIS3D(0.,-1.,1.,'X','YX','X-AXIS',6,.125) CALL AXIS3D(0.,-1.,-1.,'Y','XY','Y-AXIS',6,.125) CALL AXIS3D(0.,-1.,-1.,'Z','YZ','Z-AXIS',6,.125) C CLOSE THE BACK SIDES FOR THE PROJECTION PLANES CALL DASH3D(0.,-1.,-1.,24.,-1.,-1.,2) CALL DASH3D(0.,1.,-1.,24.,1.,-1.,2) CALL DASH3D(24.,1.,-1.,24.,-1.,-1.,2) CALL DASH3D(24.,-1.,-1.,24.,-1.,1.,2) CALL DASH3D(24.,-1.,1.,24.,1.,1.,2) CALL DASH3D(24.,1.,1.,24.,1.,-1.,2) C DRAW THE DOTTED LINES FOR GRID C FROM X-AXIS FIRST ALONG XZ THEN XY PLANE PROJECTION DO 52 I=1,5 XXX=(24.-0.)*FLOAT(I)/6.+0. CALL DASH3D(XXX,-1.,1.,XXX,-1.,-1.,5) CALL DASH3D(XXX,-1.,-1.,XXX,1.,-1.,5) 52 CONTINUE C FROM THE Y AXIS FIRST ALONG YX THEN YZ AXIS PLANE PROJECTION DO 53 I=1,2 XXX=(1.--1.)*FLOAT(I)/3.+-1. CALL DASH3D(0.,XXX,-1.,24.,XXX,-1.,5) CALL DASH3D(24.,XXX,-1.,24.,XXX,1.,5) 53 CONTINUE C FROM THE Z AXIS FIRST ALONG ZX THEN ZY AXIS PLANE PROJECTION DO 54 I=1,2 XXX=(1.--1.)*FLOAT(I)/3.+-1. CALL DASH3D(0.,-1.,XXX,24.,-1.,XXX,5) CALL DASH3D(24.,-1.,XXX,24.,1.,XXX,5) 54 CONTINUE C DRAW THE 3-D HELIX LINE CALL NEWPEN(3) CALL LINE3D(X,Y,Z,240) DO 55 J=1,240 55 ZERO(J)=-1. C DRAW THE 2-D PROJECTION OF THE HELIX ONTO THE XY PROJECTION PLANE CALL NEWPEN(4) CALL LINE3D(X,Y,ZERO,240) C DRAW THE 2-D PROJECTION OF THE HELIX ONTO THE XZ PROJECTION PLANE CALL LINE3D(X,ZERO,Z,240) DO 57 J=1,240 ZERO(J)=24. 57 CONTINUE C DRAW THE 2-D PROJECTION OF THE HELIX ONTO THE YZ PROJECTION PLANE CALL LINE3D(ZERO,Y,Z,240) C DRAW THE MARKERS AND CONNECT THE MARKER ON THE 3-D LINE TO THE C MARKER ON THE 2-D PROJECTION ON THE X-Z PROJECTION PLANE CALL NEWPEN(1) DO 58 I=1,240,24 C MARK THE 3-D LINE CALL MARK(X(I),Y(I),Z(I),' ') C MARK THE XY PROJECTION PLANE CALL MARK(X(I),Y(I),-1.,'XY') C MARK THE XZ PROJECTION PLANE CALL MARK(X(I),-1.,Z(I),'XZ') C MARK THE YZ PROJECTION PLANE CALL MARK(24.,Y(I),Z(I),'YZ') C DRAW A DASHED LINE FROM THE 3-D LINE TO THE XZ PLANE PROJECTION CALL DASH3D(X(I),Y(I),Z(I),X(I),-1.,Z(I),4) 58 CONTINUE C PLOT COMPLETED-CLOSE DOWN 3-D PLOT ROUTINES CALL FIN3D C NEW PAGE CALL ORIGIN(8.5,0.,1) C CLOSE DOWN THE ZETA PLOTTER ROUTINES CALL PLOT(0.,0.,999) CLOSE(UNIT=1) WRITE(6,60) 60 FORMAT(' PLOT FILE "TEST.PLT" CREATED-SEND TO ZETA PLOTTER') STOP END