Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: Bibliographie Sup.: 9 Exemples Préc.: Création de quelques figures géométriques Index Table des matières


Création de quelques figures géométriques 3D

      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


Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: Bibliographie Sup.: 9 Exemples Préc.: Création de quelques figures géométriques Index Table des matières