Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: 4.5 Instructions graphiques 3D Sup.: Création d'une image 3D Préc.: 4.3 Transformations 3D Index Table des matières


4.4 Les transformations

Comme déjà vu, il s'agit dans un premier temps de positionner l'observateur par rapport à l'objet. Dans le cas d'imbrication de PUSH et de PULL, il s'agira de positionner un objet par rapport à un autre.

Prenons un exemple: Soit à construire l'objet suivant composé de deux objets séparés: la PIECE A, un cube de centre de gravité 'O' et la PIECE B, un cylindre collé sur une de ses faces. On peut procéder à la description de cette pièce de deux manières différentes.

Cependant dans les deux cas on doit d'abord positionner l'observateur par rapport à l'objet.

On adoptera le vocabulaire suivant:

Une manière très simple de positionner l'observateur dans l'espace initial est d'utiliser le sous-programme suivant:

      SUBROUTINE NRMLST(XO, YO, ZO, XR, YR, ZR, IVERTI)
      REAL XO, YO, ZO, XR, YR, ZR
      INTEGER IVERTI

(XO, YO, ZO) est la  position de l'observateur dans le repère initial.

(XR, YR, ZR) représente les coordonnées du point regardé dans le même repère.

IVERTI est la verticale du repère initial:

.
IVERTI = 1 : OX vertical
.
IVERTI = 2 : OY vertical
.
IVERTI = 3 : OZ vertical

On peut alors associer à l'observateur un repère local tel qu'il soit placé à l'origine de celui-ci, regardant dans la direction de Z négatifs. C'est la position normalisée dont nous avions parlé plus haut. Le sous-programme NRMLST est généralement utilisé en conjonction avec "PRSPCT".

 
Figure: Repère lié à l'observateur 

Les différentes transformations que l'on pourra appliquer aux objets appelés sont énumérées dans la liste suivante :

      SUBROUTINE TRSL(A, B, C)
      REAL A, B, C

Définit une  translation de l'objet appelé d'un vecteur (A, B, C) par rapport à l'objet appelant.

      SUBROUTINE ROT(I, ALPHA)
      INTEGER I
      REAL ALPHA

Définit une  rotation de l'objet appelé d'un angle ALPHA radians autour de l'axe I, le sens positif est le sens trigonométrique. L'interprétation du numéro des axes est défini par :

.
1 : axe OX
.
2 : axe OY
.
3 : axe OZ

      SUBROUTINE ROTAXE(PX, PY, PZ, VX, VY, VZ, THETA)
      REAL PX, PY, PZ, VX, VY, VZ, THETA

Définit une  rotation de l'objet appelé d'un angle THETA radians autour de l'axe défini par le vecteur d'origine (PX, PY, PZ) et de composantes (VX, VY, VZ).

      SUBROUTINE SYMTRI(I, J)
      INTEGER I, J

Définit une  symétrie de l'objet appelé:

.
I = 1 Symétrie par rapport à l'origine

.
I = 2 Symétrie par rapport à un plan:
.
I = 3 Symétrie par rapport à un axe:

      SUBROUTINE SCALE(A, B, C)
      REAL A, B, C

Définit un  changement d'échelle de l'objet appelé suivant les axes OX d'un facteur A, OY d'un facteur B et OZ d'un facteur C.

      SUBROUTINE SHEAR(A, B, C)
      REAL A, B, C

Définit un  cisaillement. C'est-à-dire la transformation suivante:

      X' =   X + B*Y + C*Z
      Y' = A*X +   Y + C*Z
      Z' = A*X + B*Y +   Z

      SUBROUTINE POS3D(P1, P2, P3, Q1, Q2, Q3)
      REAL P1(3), P2(3), P3(3), Q1(3), Q2(3), Q3(3)

P1, P2 et P3 étant trois points appartenant à l'espace de  l'objet appelé, Q1, Q2 et Q3 trois points appartenant à l'espace de l'objet appellant (ces deux ensembles de trois points définissent donc chacun un plan dans leur propre espace), cette transformation permet de superposer ces deux plans (et donc de positionner l'objet appelé par rapport à l'objet appelant) de la manière suivante:

P1 sera confondu avec Q1

P2 appartiendra à la droite (Q1,Q2)

P3 appartiendra au plan (Q1,Q2,Q3)

La normale au plan (Q1,Q2,Q3) et celle du plan (P1,P2,P3), après repositionnement, sont colinéaires et de même sens.

 
Figure 4.5: Transformation obtenue par l'appel du sous-programme POS3D 

Il existe un autre sous-programme permettant à l'utilisateur de définir lui même sa propre transformation en fournissant sa propre matrice de transformation. Cette dernière est une matrice 4*4 dont la structure est detaillée dans le chapitre des sous-programmes internes.

     SUBROUTINE TRANSF(MAT)
     REAL MAT(4, 4)

Définit une  transformation par la matrice MAT en coordonnées homogènes (voir le chapitre des sous-programmes internes pour la structure de la matrice).


Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: 4.5 Instructions graphiques 3D Sup.: Création d'une image 3D Préc.: 4.3 Transformations 3D Index Table des matières