![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Next: 9.2 Creating 3D geometric figures
Up: 9 Examples
Prev: 9 Examples
Contents
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