TRANSFORMATIONS GÉOMÉTRIQUES


Principe
Transformations géométriques
Exemples
Transformations associées
Laser virtuel

















































Principe

direct
matrice

Méthode directe

Syntaxe:
transf(p)obj(id)
       transf est une transformation géométrique.
       p est une une liste de paramètres caractéristiques de cette transformation. Par exemple un angle pour une rotation, 3 coefficients pour une dilatation, 3 coordonnées pour un déplacement.
       obj est un objet standard.
Les coordonnées des points de l´objet id sont modifiés à partir de leur positions précédentes:
       poi = transf(poi).

Options:
Par défaut les transformations se font à partir de la position précédente.
ini: les transformations successives se feront à partir d´une copie des points originaux et ne sont donc pas cumulables dans ce cas:
       poi = transf(copie).
max: ne transforme que les points référencés dans les facettes (à l´exclusion des points d´ancrage).
validate: la copie prend la disposition des points transformés:
       copie = poi = transf(poi).

Exemples:
rotx(PI/4)vol(1); Fait tourner le volume 1 de PI/4 autour de l´axe des x.
rotx(PI/4)vol(1);roty(PI/3)vol(1): Fait tourner le volume 1 de PI/4 autour de l´axe des x, puis fait tourner le résultat de PI/3 autour de l´axe des y.
rotx(PI/4)vol(1)ini;roty(PI/3)vol(1): Fait la même chose, mais à partir de la copie des points originaux.
rotx(PI/4)vol(1)ini;roty(PI/3)vol(1)validate: Fait la même chose, mais en transformant la copie des points originaux.
Pour valider la copie des points on peut faire aussi: validate(1)poi vol(id).
Voir un exemple d´utilisation dans la fonction set_PAR() du fichier corps_simple.func.

Méthode par la matrice

Syntaxe:
transf(p)matrix obj(id)
       transf est une transformation linéaire: tran, dila, dilx, dily, dilz, hom, rota, axis, rotx, roty, rotz.
       p est une une liste de paramètres caractéristiques de cette transformation.
       obj est un objet standard.
Seule la matrice de l´objet id est affectée. Plus rapide mais ne permet pas de transformations non linéaires ou sur certains points seulement.
Cette transformation sera transmise à tout les suiveurs de l´objet id.
Options:
ini: donne accès aux paramètres (initiallement zéro) des transformations de base qui seront ajoutés aux paramètres courants (on peut définir des objets standards, modifier ces transformation de base mpour animer à partir des valeurs précédentes). Remarquons que cette option ini n´a pas la même signification dans la méthode directe.
Remarque:
Les boites et les boules ne sont pas affectées par ces transformations, cependant attach generate [box ball] vol(id) et attach displ [box ball] vol(id) les prennent en compte.

Transformations géométriques

Les transormations
Options
Transformation appliquée à certains sommets

Les transformations


       Tout objet peut être modifié par l´une des transformations:

         adjust: ajustements.
         alea: aléatoire reproductible.
         alex: aléatoire en x.
         aley: aléatoire en y.
         alez: aléatoire en z.
         tran: déplacements.
         dila: dilatations.
         dilx: dilatations en x.
         dily: dilatations en y.
         dilz: dilatations en z.
         hom: omothéties.
         rand: aléatoire non reproductible
         rota: rotations.
         rotx: rotations en x.
         roty: rotations en y.
         rotz: rotations en z.
         sphere: déformation sphérique
         syma: symétries.
         symx: symétries en x.
         symy: symétries en y.
         symz: symétries en z.

Options


mouse(s)
s est un coefficient multiplicateur de la souris.
       Réalise transf(s*mouse)
mouse(s)normal
       Réalise transf(s*(mouse normalisée entre -0.5 et 0.5))
mouse(s)normal(x1,y1,x2,y2)
       Réalise transf(s*(mouse normalisée entre (x1,y1) et (x2,y2)))
mouse(s)frame(x1,y1,x2,y2)
       Affiche le cadre (x1,y1,x2,y2) et ne traite que les valeurs intérieures à ce cadre.

Transformation appliquée à certains sommets

transf(p)obj(id)vertex(s);
Dans ce cas des options permettent de faire varier les paramètres p entre p1 et p2 en fonction de l´indice du sommet dans la liste s
acc: acceléré
dec: décéléré
pend: pendulaire
cos: cosinusoïdale;
sin: sinusoïdale;
law(w)
Exemple:
dila(.5,.5,.5,2,2,2)vertex[1,12]vol(1)pend;
Dilate les sommets 1 à 12 du volume numéro 1 de façon pendulaire entre 0.5 et 2.0.

Exemples

tran(200,100,0)vol(1)
       Déplace le volume numéro 1 de (200,100,0)
sphere vol(3) poi(0,100) radius(100)
       Applique l´outil sphère de center (0,100,0) et de rayon 100 au volume numéro 3
Remarque:
transf vol(id)abs
         Ne traîte que les points signifiants sur des volumes ancrés.

Transformations associées

T1(p11,p12)vol(id1)T2(p21,p22)vol(id2)

Lorsque le paramètre de la transformation T2 du volume id2 varie entre p21 et p22, le paramètre de la transformation T1 du volume id1 varie entre p11 et p12.

Exemples

roty(-P/2,PI/2)vol(1)rotz(-PI,PI)vol(2)
       Le volume 1 tourne entre -PI/2 et PI/2 autour des y lorsque le volume 2 tourne entre -PI et PI autour des z.
tran(-200,0,0, 200,0,0)vol(1)rotz(-PI,PI)vol(2)
       Le volume 1 se déplace entre (-200,0,0) et (200,0,0) lorsque le volume 2 tourne entre -PI et PI autour des y.

Attachment of associated transformations

La commande attach permet d´encapsuler des transformations associées, see example in function func_TRA_ROTZ_ROTZ() of file demo1_attach.func:
attach(0)rotz(a1,a2)vol(a)rotz(b1,b2)vol(b);
With yes attach le volume a tournera en z dans l´intervalle [a1,a2] lorsque le volume tourne en z dans l´intervalle [b1,b2].

Laser virtuel

La méthode du laser virtuel consiste à simuler un laser réel scannant des volumes en faisant tourner un radius dans un plan horizontal se déplaçant verticalement et intersectant ces volumes.
La simulation n´ayant aucune raison de limiter les déplacements du rayon, celui-ci peut être issu d´une source quelconque et viser un autre point que celui situé sur l´axe et dans le plan perpendiculaire à cet axe passant par la source. Par exemple le point de visée peut explorer des concavités de l´objet scanné.
L´ensemble des sources n´est pas nécessairement un cylindre mais peut être une box généralisée (engendrée par des courbes paramétriques entourant au mieux le volume).
De même l´ensemble des points de visée n´est pas nécessairement un axe mais peut être une courbe (par exemple l´ensemble des CG des secy de la box).
La commande envelope vol permet de contrôler par programme un tel laser virtuel.