![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Suiv.: Bibliographie
Sup.: 9 Exemples
Préc.: Création de quelques figures géométriques
Index
Table des matières
PROGRAM IMAG3D
C --- TRACE DE FIGURES
REAL PI
PARAMETER (PI=3.14152)
INTEGER ITERM,PAROUT(10), PARIN(10)
CHARACTER*80 STRING
REAL PAS1,PAS2,R1,R2,A,B,ALPHA,X,Y,Z,XMIN,XMAX,YMIN,YMAX
REAL PX,XX,YY,TAILLE,PY1,PY2,PY3,O
LOGICAL BID
INTEGER IBID,NBCIN
CHARACTER*1 REP
C --- DEFINITION INTERACTIVE DU TERMINAL
ITERM = 0
CALL DEFDEV(ITERM, PAROUT, PARIN, STRING)
C --- DIMENSIONS DE L'ECRAN
CALL SZSCRN(XMIN, XMAX, YMIN, YMAX)
CALL FENTR2(XMIN, XMAX, YMIN, YMAX)
CALL MASQU2(XMIN, XMAX, YMIN, YMAX)
C --- TAILLE DES TEXTES
TAILLE = MIN((YMAX-YMIN)/10. , 0.5)
CALL DRW3TX(TAILLE, 0., O)
C --- POSITION DES TEXTES
PX = XMIN + (XMAX-XMIN) / 20.
PY1 = YMAX - 2.*TAILLE
PY2 = YMAX - 4.*TAILLE
PY3 = YMIN + 2.*TAILLE
C --- ENTREE DU PAS
PAS1=0.1
PAS2=0.1
2 CONTINUE
CALL CLEAN
C --- COULEUR COURANTE = BLANC
CALL SETCOL(1., 1., 1.)
CALL GETNUM('PAS DE ROTATION EN FRACTION DE PI/2 : ',
+ PX, PY1, PAS1, IBID, BID, 1, 1, 0, 0, 0., 2.)
CALL GETNUM('PAS D''ENROULEMENT EN FRACTION DE PI/2: ',
+ PX, PY2, PAS2, IBID, BID, 1, 1, 0, 0, 0., 2.)
C --- DEFINITION DE LA PERSPECTIVE
ALPHA = PI/10.
CALL PRSPCT (ALPHA , ALPHA)
C --- DEBUT DE L'IMAGE
CALL PUSH
C --- POSITIONNER L'OBSERVATEUR
CALL NRMLST(400., 400., 300., 0., 0., 0., 3)
C --- FIN DES TRANSFORMATIONS A APPLIQUER A L'OBSERVATEUR
C --- DEBUT DE LA SEQUENCE DE DESCRIPTION DE L'OBJET
CALL PREPAR
C --- INITIALISER LA POSITION DU CURSEUR
CALL MOV3TO(125., 0., 0.)
C --- DESSIN DE L'OBJET
R1 = 100.
R2 = 25.
A = 0.
DO 1 B = 0. , 8.*PI , PAS1*2.*PI/200.
A = MOD (A + PAS2*2.*PI , 2*PI)
X = (R1 + R2*COS(A)) * COS(B)
Y = (R1 + R2*COS(A)) * SIN(B)
Z = R2 * SIN(A)
CALL LIN3TO(X, Y, Z)
1 CONTINUE
CALL LIMITS(0)
C --- FIN DU DESSIN
CALL PULL
CALL FENTR2(XMIN, XMAX, YMIN, YMAX)
CALL MASQU2(XMIN, XMAX, YMIN, YMAX)
CALL SETCOL(1., 1., 1.)
XX = PX
YY = PY3
CALL GETEXT('> CONTINUER (O/N) ? ', XX, YY, 1, REP, NBCIN)
IF (REP .EQ. 'O' .OR. REP.EQ.'Y') THEN
C --- ON CONTINUE
GOTO 2
ELSE
C --- ON NE CONTINUE PAS
CALL ENDDEV(ITERM)
ENDIF
END