Transformation matrices

(Cliquez-ici pour accéder à la version originale de cette discussion avec couleurs et images)







Posted by: ancrou

Bonjour,
Je manipule des volumes 3D en Java3D.
Mon volume possède une matrice 4x4 qui représente les transformations (rotation, translation...) de faites sur celui-ci.
Initialement c'est une matrice identité(4).
La dernière colonne est pour les translations.
 \left( \begin{array}{ccc}<br />
1 &amp; 0 &amp; 0 &amp; x\\<br />
0 &amp; 1 &amp; 0 &amp; y \\<br />
0 &amp; 0 &amp; 1 &amp; z \\<br />
0 &amp; 0 &amp; 0 &amp; 1 \end{array} \right)
La derniere ligne est juste pour être carré
Le reste pour les 3 rotations.
 \left( \begin{array}{ccc}<br />
cos(Az) &amp; sin(Az)  &amp; 0 &amp; 0\\<br />
-sin(Az)  &amp; cos(Az)  &amp; 0 &amp; 0 \\<br />
0 &amp; 0 &amp; 1 &amp; 0 \\<br />
0 &amp; 0 &amp; 0 &amp; 1 \end{array} \right)

Le problème c'est pour faire une translation selon l'axe du volume qui est une tige.
Je suis arrivé à connaître les angles de ma tige (volume3D), puis je fais de la trigo de collège pour appliquer mes 2 translations et

Code:
translation.x = dy *z_factor*(Math.cos(angle_z)+Math.cos(angle_y)); translation.z = dy * z_factor*(Math.sin(angle_z)+Math.sin(angle_x)); translation.y = dy*z_factor*(Math.cos(angle_x)+Math.sin(angle_y));

dy est le mouvement de la souris
z_factor juste un coef réducteur = sensibilité



Posted by: Flodelarab

Où est la question ?



Posted by: ancrou

Citation:
Posté par Flodelarab
Où est la question ?

Comment faire une translation selon l'axe de mon volume ?
Mon code ne donne pas un résultat satisfaisant.
Merci.











-