1 pièce(s) jointe(s)
rotation d'un objet en 3D
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 :
Code:
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;
}
}; |
et j'applique sur mon bouton de rotation le code suivant :
Code:
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);
}
} |
le probleme est que ca ne me fait pas du tout une rotation à 90°.
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);