10.03.2014 Views

Enoncé - IUT d'Arles

Enoncé - IUT d'Arles

Enoncé - IUT d'Arles

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

A la découverte de Maple - Sylvain Damour - Editions Ellipses, 2005 1<br />

http://www.iut-arles.up.univ-mrs.fr/damour/a-la-decouverte-de-maple<br />

Sujet de travaux pratiques supplémentaire<br />

Transformations géométriques d’un objet 3D - Partie I<br />

c○ 2005 Sylvain Damour<br />

Introduction<br />

Le but de ce sujet est de créer un objet géométrique 3D simple, par exemple un cube, puis de l’animer<br />

par des transformations géométriques comme des rotations et homothéties.<br />

Il faudra utiliser les paquetages LinearAlgebra, plots et plottools.<br />

1 Tracer un polygone 3D<br />

Les objets géométriques que nous manipulerons seront représentés par des polygones. D’où l’importance<br />

de la commande polygon, qui permet de tracer un polygone 3D. Elle s’utilise de la façon suivante :<br />

> P := polygon([[x1,y1,z1], [x2,y2,z2], [x3,y3,z3], ...]);<br />

> display(P);<br />

où [x1,y1,z1] sont les coordonnées du premier sommet du polygone, [x2,y2,z2] sont les coordonnées<br />

du deuxième sommet, et ainsi de suite. . .<br />

◮<br />

Tracer un triangle grâce à la commande polygon.<br />

2 Tracer un objet 3D<br />

Pour tracer un objet géométrique 3D représenté par des polygones, il faut tout d’abord définir ces<br />

polygones par : P1 := polygon(...), P2 := polygon(...), P3 := polygon(...), etc. On doit ensuite<br />

définir l’objet sous la forme d’une liste de ces polygones : OBJET := [P1, P2, P3, ...]. Enfin, pour<br />

tracer l’objet, on utilise : display(OBJET).<br />

⋆ Il est conseillé de définir tout d’abord tous les sommets de l’objet : S1 := [x1,y1,z1], S2 :=<br />

[x2,y2,z2], S3 := [x3,y3,z3], etc. Puis on définit les polygones à partir de ses sommets, par exemple<br />

P1 := [S1,S2,S3].<br />

◮<br />

Tracer un tétraèdre.<br />

3 Animer un objet 3D<br />

Pour animer un objet géométrique 3D, on définit tout d’abord les différentes images, c’est-à-dire les<br />

différentes positions de cet objet : O1 := display([P11 ,P12, P13, ...]), O2 := display([P21<br />

,P22, P23, ...]), O3 := display([P31 ,P32, P33, ...]), etc. Puis, on crée l’animation sous la<br />

forme d’une liste d’images ou d’objets : ANIM := [O1, O2, O3, ...]. Enfin, pour visualiser l’animation,<br />

on utilise : display(ANIM, insequence=true).<br />

◮ Animer le tétraèdre précédent en trois images, par exemple en déplaçant légèrement un de ces<br />

sommets.


A la découverte de Maple - Sylvain Damour - Editions Ellipses, 2005 2<br />

4 Transformations géométriques d’un cube<br />

On considère un cube C centré en O(0, 0, 0). On souhaite lui appliquer une transformation géométrique,<br />

définie par sa matrice M de taille 3 × 3.<br />

◮ Ecrire une procédure cube qui prend comme arguments une matrice M et un entier naturel n. La<br />

procédure anime le cube C par la transformation de matrice M. Le cube initial est C 0 = C. Puis on<br />

applique la transformation M et on obtient le cube suivant C 1 . Et ainsi de suite pour les cubes C 2 , C 3 ,<br />

. . ., C n . Finalement, on crée l’animation ANIM := [C0, C1, C2, ..., Cn], et on l’affiche.<br />

⋆ Pour passer du type Vector , nécessaire au calcul matriciel, au type list [x,y,z],<br />

nécessaire à l’affichage, on utilise la commande convert(..., list). Inversement, on utilise la commande<br />

convert(..., Vector).<br />

5 Tests<br />

◮ Tester la procédure cube sur les transformations géométriques suivantes :<br />

⎛<br />

⎞<br />

cos α − sin α 0<br />

1 o ) La rotation autour de l’axe (Oz) et d’angle α = π/40, avec n = 80 : R z = ⎝sin α cos α 0⎠ .<br />

0 0 1<br />

⎛<br />

⎞<br />

cos α 0 sin α<br />

2 o ) La rotation autour de l’axe (Oy) et d’angle α = π/40, avec n = 80 : R y = ⎝ 0 1 0 ⎠ .<br />

− sin α 0 cos α<br />

⎛<br />

1 0 0<br />

⎞<br />

3 o ) La rotation autour de l’axe (Ox) et d’angle α = π/40, avec n = 80 : R x = ⎝0 cos α − sin α⎠ .<br />

0 sin α cos α<br />

⎛<br />

k 0<br />

⎞<br />

0<br />

4 o ) L’homothétie de centre O et de rapport k = 1.03, avec n = 80 : H = ⎝0 k 0⎠ .<br />

0 0 k<br />

5 o ) La mise à l’échelle de centre O et⎛de rapports k = 1.015 pour les x, l = 0.99 pour les y et m = 1.01<br />

pour les z, avec n = 80 : M = ⎝ k 0 0<br />

⎞<br />

0 l 0 ⎠ .<br />

0 0 m<br />

6 o ) La rotation autour du vecteur ⃗u = (a, b, c), avec a = 1/ √ 3, b = 1/ √ 3 et c = 1/ √ 3, et d’angle<br />

θ = π/40, avec n = 80 :<br />

⎛<br />

⎞<br />

R = ⎝ a2 + (1 − a 2 ) cos θ ab(1 − cos θ) − c sin θ b sin θ + ac(1 − cos θ)<br />

ab(1 − cos θ) + c sin θ b 2 + (1 − b 2 ) cos θ −a sin θ + bc(1 − cos θ) ⎠ .<br />

−b sin θ + ac(1 − cos θ) a sin θ + bc(1 − cos θ) c 2 + (1 − c 2 ) cos θ<br />

7 o ) La composée A de la rotation R z et de l’homothétie H, avec n = 80.<br />

◮ Peut-on modéliser une translation avec la procédure cube, en donnant sa matrice ?


A la découverte de Maple - Sylvain Damour - Editions Ellipses, 2005 3<br />

6 Coordonnées homogènes<br />

Soit M un point de R 3 de coordonnées cartésiennes (x, y, z). Des coordonnées homogènes du point M sont<br />

[x; y; z; 1]. Inversement, soit N un point de R 3 de coordonnées homogènes [x; y; z; w]. Les coordonnées<br />

cartésiennes du point N sont alors (x/w, y/w, z/w).<br />

Les matrices agissant sur les vecteurs de coordonnées homogènes sont les suivantes :<br />

⎛<br />

⎞<br />

1 0 0 a<br />

– La translation de vecteur ⃗u = (a, b, c) : T = ⎜0 1 0 b<br />

⎟<br />

⎝0 0 1 c⎠ .<br />

0 0 0 1<br />

⎛<br />

⎞<br />

cos α − sin α 0 0<br />

– La rotation autour de l’axe (Oz) et d’angle α : R z = ⎜sin α cos α 0 0<br />

⎟<br />

⎝ 0 0 1 0⎠ .<br />

0 0 0 1<br />

⎛<br />

⎞<br />

cos α 0 sin α 0<br />

– La rotation autour de l’axe (Oy) et d’angle α : R y = ⎜ 0 1 0 0<br />

⎟<br />

⎝− sin α 0 cos α 0⎠ .<br />

0 0 0 1<br />

⎛<br />

⎞<br />

1 0 0 0<br />

– La rotation autour de l’axe (Ox) et d’angle α : R x = ⎜0 cos α − sin α 0<br />

⎟<br />

⎝0 sin α cos α 0⎠ .<br />

0 0 0 1<br />

⎛<br />

⎞<br />

k 0 0 0<br />

– L’homothétie de centre O et de rapport k : H = ⎜0 k 0 0<br />

⎟<br />

⎝0 0 k 0⎠ .<br />

0 0 0 1<br />

◮ Transformer la procédure cube en une procédure cube4 pour qu’elle accepte une matrice 4 × 4,<br />

représentant une transformation géométrique en coordonnées homogènes.<br />

◮ Tester cette nouvelle procédure sur la translation de vecteur ⃗u = (0, 0, 0.05) avec n = 80, puis sur<br />

la composée A = T RH de la translation T de vecteur ⃗u = (0, 0, 0.1), de la rotation autour de (Oz) et<br />

d’angle π/40 et de l’homothétie de rapport 1.02, avec n = 80.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!