Modulefpreviousupnextcontents[BIG][Normal][small]
Next: 9.2 Creating 3D geometric figures Up: 9 Examples Prev: 9 Examples Contents


9.1 Creating 2D geometric figures

The following subroutine uses only the 2D graphics instructions.

       PROGRAM IMAG2D
C  --- PLOT FIGURES 
       REAL PI
       PARAMETER (PI=3.14152)
       INTEGER ITERM,PAROUT(10), PARIN(10) 
       CHARACTER*80 STRING
       REAL PAS,R1,R2,A,B,ALPHA,X,Y,Z,XMIN,XMAX,YMIN,YMAX
       REAL CX,CY,PX,XX,YY,DIMFEN,CX1,CX2,TAILLE,PY1,PY2,O,R,CY1,CY2
       LOGICAL BID
       INTEGER IBID,NBCIN
       CHARACTER*1 REP
C  --- INTERACTIVE DEFINITION OF THE TERMINAL
       ITERM = 0
       CALL DEFDEV(ITERM, PAROUT, PARIN,STRING)
C  --- SCREEN DIMENSIONS
       CALL SZSCRN(XMIN, XMAX, YMIN, YMAX)  
C  --- COMPUTATION OF A SQUARE WINDOW FOR THE PLOT
       DIMFEN = MIN(XMAX-XMIN, YMAX-YMIN) / 2. 
       CX = (XMIN + XMAX) / 2.
       CY = (YMIN + YMAX) / 2. 
       CX1 = CX - DIMFEN
       CX2 = CX + DIMFEN
       CY1 = CY - DIMFEN
       CY2 = CY + DIMFEN
       CALL FENTR2(XMIN, XMAX, YMIN, YMAX)
       CALL MASQU2(XMIN, XMAX, YMIN, YMAX)
C  --- TEXT SIZE
       TAILLE = MIN((YMAX-YMIN)/10. , 0.5)
       CALL DRW3TX(TAILLE, 0., O)
C  --- TEXT POSITION 
       PX = XMIN + (XMAX-XMIN) / 20.
       PY1 = YMAX - 2.*TAILLE
       PY2 = YMIN + 2.*TAILLE
C  --- INPUT STEP
       PAS=0.5
   2   CONTINUE
       CALL CLEAN
C  --- CURRENT COLOR = WHITE
       CALL SETCOL(1., 1., 1.)
       CALL GETNUM('DONNEZ LE PAS DU LA SPIRALE ENTRE 0. ET 1. : ',
     + PX, PY1, PAS, IBID, BID, 1, 1, 0, 0, 0.001, 1.)
C  --- MASK DEPENDING ON PLOT
       CALL FENTR2(CX1, CX2, CY1, CY2)
       CALL MASQU2(-100., 100., -100., 100.) 
C  --- INITIAL CURSON POSITION 
       CALL MOV2TO(0., 0.) 
C  --- PLOT OF OBJECT
       R = 0. 
       DO 1 A = 0. , 8.*PI ,2.*PI/200
          R = R + PAS/10.
          X = R * COS(A)
          Y = R * SIN(A)
          CALL LIN2TO(X, Y)
    1  CONTINUE 
C  --- END OF PLOT
       CALL FENTR2(XMIN, XMAX, YMIN, YMAX)
       CALL MASQU2(XMIN, XMAX, YMIN, YMAX)
       CALL SETCOL(1., 1., 1.)
       XX = PX
       YY = PY2 
       CALL GETEXT('> CONTINUER (Y/N) ? ', XX, YY, 1, REP, NBCIN)
       IF (REP.EQ.'O'.OR.REP.EQ.'Y') THEN 
C         --- CONTINUE
          GOTO 2
       ELSE
C         --- DO NOT CONTINUE
          CALL ENDDEV(ITERM)
       ENDIF
       END


Modulefpreviousupnextcontents[BIG][Normal][small]
Next: 9.2 Creating 3D geometric figures Up: 9 Examples Prev: 9 Examples Contents