C PROGRAM GFIC C "GFIC" DRAWS GRAPHS IN TWO AND THREE DIMENSIONS,ROTATE THE IMAGE, C AND EXPANDS AND CONTRACTS IT.IN ADDITION,IT HAS ALL THE HOUSEKEEPING C FUNCTIONS. C B 2-DIMENSIONAL GRAPHING (COEFFICIENTS,DOMAINS,ORIGINS) C D CHAINS TO DRAW.SV C E ERASES SCREEN C G 3-DIMENSIONAL GRAPHING (COEFFIZIENTS,DOMAINS,ORIGINS) C I INITIALIZES TABLE C R ROTATION (DIRECTION,DEGREES) C S SCALING (EXPANSION FACTOR) C T CHAINS TO TAPE.SV C W WRITES ALL VECTORS IN TABLE C X EXITS FROM PROGRAM C F CHAINS TO MODIFY.SV C FORTRAN II C SR : ERASE.FT / FDIS.FT / ALPHA.FT / RKB.FT C CH : TAPE.SV / MODIFY.SV / DRAW.SV C BEARBEITUNG VON DECUS #8-773 COMMON NTAB,IPT DIMENSION NTAB(500,3) GOTO 2 1 IPT=0 2 N3=1 N5=1 Q4=1. J2=70 GOTO 4 3 CALL ERASE 4 CALL FDIS(0,0,767) CALL ALPHA CALL RKB(K) C G-GRAPH,I-INIT,B-BILEVEL,S-SIZE,R-ROTATE,X-EXIT,W-WRITE, C E-ERASE,T-TAPE,D-DRAW,F-MODIFY IF (K-480) 5,22,5 5 IF (K-608) 6,1,6 6 IF (K-160) 7,36,7 7 IF (K-1248) 8,37,8 8 IF (K-1184) 9,40,9 9 IF (K-288) 10,17,10 10 IF (K-1568) 11,21,11 11 IF (K-1504) 12,18,12 12 IF (K-352) 13,3,13 13 IF (K-1312)14,16,14 14 IF (K-416) 4,15,4 15 CALL CHAIN('MODIFY') 16 CALL CHAIN('TAPE') 17 CALL CHAIN('DRAW') C WRITING ROUTINE 18 N5=2 GOTO (19,38,45),N3 19 CALL FDIS(0,NTAB(1,2),NTAB(1,3)) DO 20 N=1,IPT 20 CALL FDIS (NTAB(N,1),NTAB(N,2),NTAB(N,3)) N3=1 N5=1 GOTO 4 21 CALL EXIT C GRAPHING ROUTINE 22 CALL ALPHA READ (1,100)A1,A2,A3,A4,A5,A6,A7 100 FORMAT('ENTER COEFF"S IN ORDER (1X**2+3Z**4+5)**6*7', 17(' ',F4.2)) READ (1,101) D,R,OX,OZ 101 FORMAT('ENTER D,R,OX,OZ F4.2 ',4(' 'F4.2)) Z=-OZ DO 35 I2=1,767,J2 IPT=0 DO 31 I=0,1023,30 X=-OX+FLOAT(I)*D/1023. Y=(A1*X**A2+A3*Z**A4+A5)**A6*A7 IF(Y)25,25,26 25 Y=1. 26 IF(Y-767.) 28,28,27 27 Y=767. 28 IPT=IPT+1 IF (IPT-500) 29,29,30 29 NTAB(IPT,1)=1 NTAB(IPT,2)=I NTAB(IPT,3)=IFIX(Y) GOTO 31 30 WRITE (1,103) 103 FORMAT ('MATRIX FILLED') GOTO 32 31 CONTINUE 32 CALL ERASE GOTO (33,38,45),N3 33 CALL FDIS(0,NTAB(1,2),NTAB(1,3)) DO 34 N=1,IPT 34 CALL FDIS (NTAB(N,1),NTAB(N,2),NTAB(N,3)) Z=-OZ+FLOAT(I2)*R/767. 35 CONTINUE N3=1 GOTO 4 C BILEVEL FUNCTION 36 CALL ALPHA J2=767 Q4=-1. WRITE(1,104) 104 FORMAT('ENTER Z-LEVEL FOR OZ') GOTO 22 C SCALING ROUTINE 37 CALL ALPHA READ (1,105) S 105 FORMAT ('EXPANSION FACTOR (F4.2)',F4.2) N3=2 GOTO 4 38 DO 39 N=1,IPT T=(FLOAT(NTAB(N,2))-512.)*S+512. R=(FLOAT(NTAB(N,3))-384.)*S+384. NTAB(N,2)=IFIX(T) NTAB(N,3)=IFIX(R) 39 CONTINUE GOTO (33,19),N5 C ROTATE FUNCTION 40 CALL ALPHA READ (1,106) NT2 106 FORMAT ('DIRECTION (W=CLOCKWISE,C=C-CLOCKWISE) ',A1) IF (NT2-1504) 41,42,41 41 IF (NT2-224) 4,43,4 C CLOCKWISE ROTATION 42 Q3=-1. GOTO 44 43 Q3=1. 44 READ (1,107) T 107 FORMAT ('DEGREES F3.0 ',F3.0) Q2=T*3.1415925/180.*Q3 Q3=COS(Q2) Q2=SIN(Q2) N3=3 GOTO 4 45 DO 46 N=1,IPT Q=Q3*FLOAT(NTAB(N,2)-512)+Q2*FLOAT(NTAB(N,3)-383) Q4=-Q2*FLOAT(NTAB(N,2)-512)+Q3*FLOAT(NTAB(N,3)-383) NTAB(N,2)=IFIX(Q)+512 46 NTAB(N,3)=IFIX(Q4)+383 GOTO (33,19),N5 END