Bonjour, j'ai un objet 3D, et je voudrais le faire tourner de 90°.
mon objet est une suite de points définies avec 3 coordonnées (x,y,z).
la rotation selon x pour l'exemple est un prototype de la fonction constructrice des coordonées :
et j'applique sur mon bouton de rotation le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 //constructeur function Vector3d(x, y, z) { this.x = x; this.y = y; this.z = z; } //methodes Vector3d.prototype.rotateX = function(ca, sa) { with (this) { y = y*ca-z*sa; z = y*sa+z*ca; } };
le probleme est que ca ne me fait pas du tout une rotation à 90°.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 on(press) { cosa = Math.cos((Math.PI/2)/180); sina = Math.sin((Math.PI/2)/180); //application de la méthode de rotation aux points for(i=0;i<2*nb_faces;i++){ _root.viewer.pointsd[i].rotateX(cosa,sina); _root.viewer.pointsg[i].rotateX(cosa,sina); _root.viewer.points[i].rotateX(cosa,sina); } //application de la méthode de rotation aux milieux des faces for(i=0;i<nb_faces+2;i++){ _root.viewer.milieuxd[i].rotateX(cosa,sina); _root.viewer.milieuxg[i].rotateX(cosa,sina); _root.viewer.milieux[i].rotateX(cosa,sina); } }
J'ai essayé de remplacer la valeur de cosa et sina par 0 et 1, et la ca tourne à 90°, mais que une seule fois!!!! ensuite, ma figure ne bouge plus. Serait-ce un problème de formule, ou d'autre chose?????
je joint le fla avec la rotation
cosa = Math.cos((Math.PI/2)/180);
sina = Math.sin((Math.PI/2)/180);
Partager