Enoncé - IUT d'Arles
Enoncé - IUT d'Arles
Enoncé - IUT d'Arles
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.