Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: 4.6 Textes Sup.: Création d'une image 3D Préc.: 4.4 Les transformations Index Table des matières


4.5 Instructions graphiques 3D

Les composantes élémentaires sont supposées être créées à l'aide d'un curseur fictif indépendant du curseur défini en 2D.

      SUBROUTINE MOV3TO(X, Y, Z)
      REAL X, Y, Z

Déplace le  curseur au point de coordonnées (X, Y, Z).

                                                            
      SUBROUTINE MOV3OF(U, V, W)
      REAL U, V, W

Déplace le  curseur d'un vecteur (U, V, W).

      SUBROUTINE LIN3TO(X, Y, Z)
      REAL X, Y, Z

Crée un segment de  droite  depuis la position courante du curseur jusqu'au point de coordonnées (X, Y, Z). Ce dernier point devient la position courante du curseur.

      
      SUBROUTINE LIN3OF(U, V, W)
      REAL U, V, W

Crée un  segment de droite de vecteur (U, V, W) depuis la position courante du curseur. L'extremité du segment devient la position courante du curseur.

      SUBROUTINE POLY3F(X, Y, Z, NB, CFAC, CCONT, IFALG)
      INTEGER NB, CFAC, CCONT, IFALG 
      REAL X(NB), Y(NB), Z(NB)

Crée une  facette de NB sommets (NB < 50).

X(NB), Y(NB), Z(NB): Coordonnées des sommets de la facette.

NB : Nombre de sommets de la facette

CFAC : Couleur de la facette

CCONT : Couleur du contour

IFLAG : Option de tracé

.
0 : Tracé de la facette seule
.
1 : Tracé du contour seul
.
2 : Tracé de la facette et du contour

En fait ce sous-programme effectue le remplissage de la facette sur la surface delimitée par la projection du contour de la facette sur le masque 2D défini par l'appel de PRSPCT. Si la facette est courbée dans l'espace et si une partie de sa surface est cachée par une autre partie située plus près de l'observateur, elle risquera donc de ne pas être complètement remplie. Même remarque pour le clipping des facettes non convexe que POLY2F.

D'une manière générale, aussi bien en 2D qu'en 3D, on peut définir les facettes de la manière suivante:

      SUBROUTINE DEBFAC(ITYP)
      INTEGER ITYP

Indique le début de  la description d'une facette. Cette description se fera par la définition des segments de droite entrant dans la composition du contour polygonal de la facette.

Si ITYP = 0 : Définition du contour extérieur

Si ITYP = 1 : Définition d'un trou

      SUBROUTINE FINFAC

Indique la  fin de la séquence de la description d'une facette.

      SUBROUTINE CURVE3(TX, TY, TZ, NB)
      REAL TX(NB), TY(NB), TZ(NB)
      INTEGER NB

Trace la  ligne brisée de NB sommets dont les coordonnées sont fournies par les tableaux TX, TY et TZ. A la fin du tracé la position courante du curseur devient celle du dernier sommet.

      SUBROUTINE CURVE(TX, TY, NB)
      REAL TX(NB), TY(NB)
      INTEGER NB

Trace dans le  plan XOY la  ligne brisée de NB sommets dont les coordonnées successives sont fournies par les tableaux TX et TY. A la fin du tracé la position courante du curseur est celle du dernier sommet, i.e. (TX(NB), TY(NB), 0.).

      SUBROUTINE POLGON(R, A, NB)
      REAL R, A
      INTEGER NB

Trace dans le  plan XOY à partir de l'axe OX la polyligne régulière de NB arêtes qui approche l'arc de cercle centré à l'origine et faisant un angle A (radians) compté positivement dans le sens trigonométrique. A la fin du tracé la position courante du curseur est l'extrémité de l'arc.

      SUBROUTINE CIRCLE(R, NB)
      REAL R
      INTEGER NB

Trace dans le  plan XOY le polygone régulier de NB cotés approchant le cercle de rayon R centré à l'origine. A la fin du tracé la position courante du curseur est (R, 0., 0.).

      SUBROUTINE CRCLCP(XC, YC, X, Y, NB)
      REAL XC, YC, X, Y
      INTEGER NB

Trace dans le  plan XOY le polygone régulier de NB cotés approchant le cercle de centre (XC, YC) et passant par le point (X, Y). A la fin du tracé la position courante du curseur est (X, Y, 0.).

      SUBROUTINE ARC(A, TC, TP, NB)
      REAL A, TC(2), TP(2)
      INTEGER NB

Trace dans le  plan XOY le polygone régulier de NB cotés approchant l'arc de cercle centré en (TC(1), TC(2), 0.), d'origine le point (TP(1), TP(2), 0.) et d'angle A radians compté positivement dans le sens trigonométrique. A la fin du tracé la position courante du curseur est l'extrémité de l'arc.

      SUBROUTINE ARC2P(TC, TP, NB)
      REAL TC(2), TP(4)
      INTEGER NB

Trace dans le  plan XOY le polygone régulier de NB cotés approchant l'arc de cercle centré en (TC(1), TC(2), 0.), d'origine le point (TP(1), TP(2), 0.), d'extrémité le point (TP(3), TP(4), 0.) et tracé dans le sens trigonométrique (en fait cette extrémité se trouve sur la droite passant par ce point et l'origine). A la fin du tracé la position courante du curseur est l'extrémité de l'arc.

      SUBROUTINE PRISMM(H, TP, NB)
      REAL H, TP(2, NB)
      INTEGER NB

Trace les  arêtes d'un prisme droit de hauteur H, dont la base située dans le plan XOY est définie par le contour polygonal fermé dont les coordonnées successives des NB sommets sont indiquées par le tableau TP. A la fin du tracé la position courante du curseur est le point (TP(1, NB), TP(2, NB), H).

      SUBROUTINE REVOL(C, NBCB, NC)
      REAL C(2, NBCB)
      INTEGER NBCB NC

Trace les  arêtes d'un volume de révolution obtenu à partir d'une courbe définie dans le plan XOY tournant autour de l'axe OY. Les NBCB sommets de la courbe sont contenus dans le tableau C et les cercles comportent NC arêtes. A la fin du tracé la position courante du curseur est le point (C(1, NBCB), C(2, NBCB), 0.).

      SUBROUTINE CARRE

Trace dans le  premier cadran du plan XOY, un carré de coté 1., dont le sommet bas gauche est situé à l'origine. A la fin du tracé la position du curseur est l'origine.

      SUBROUTINE CUBE

Trace les arêtes d'un cube de coté 1., s'appuyant sur les trois axes, situé dans le trièdre positif et dont l'un des sommets est l'origine. A la fin du tracé la position courante du curseur est le point (0., 1., 1.).

      SUBROUTINE TRIEDR

Trace un  trièdre représentant les axes de coordonnées, dont les arêtes sont de longueur unité et comportant les lettres X, Y et Z respectivement à l'extrémité de chacun des axes. A la fin du tracé la position courante du curseur est indéterminée.

      SUBROUTINE WPRISM(S, NB, D, H, BOUTS, DERFAC)
      INTEGER BOUTS
      REAL S(2, NB), D(3), H
      LOGICAL DERFAC

Identique au  sous-programme PRISMM mais avec remplissage des facettes :

S : section du prisme dans le plan XOY

NB: nombre de sommets dans cette section

D : vecteur, direction des génératrices

H : hauteur en Z du prisme. Vecteur de translation entre les sections Z = 0 et Z = H

BOUTS: Option pour fermer les faces:

.
0 ne pas fermer les faces extrêmes
.
1 fermer la face 1 (Z = 0)
.
2 fermer la face 2 (Z = H)
.
3 fermer les deux faces

DERFAC: Si .TRUE. fermer la dernière facette (polygone fermé).

Si .FALSE. ne pas fermer la dernière facette (polygone ouvert).

      SUBROUTINE WCUBE(C)
      REAL C

Trace un  cube d'arête C (voir CUBE).

      SUBROUTINE WREVOL(C, NBCB, N, FONDS, ICOUL)
      REAL C(2, NBCB)
      LOGICAL FONDS

Identique au  sous-programme REVOL mais avec remplissage des facettes:

NBCN: Nombre de points sur la courbe

N: Nombre de points sur les cercles

FONDS=.TRUE. si on doit tracer les fonds (bases de l'objet).


Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: 4.6 Textes Sup.: Création d'une image 3D Préc.: 4.4 Les transformations Index Table des matières