PDA

Voir la version complète : Vecteur->angle/Y


codespirit
14/11/2005, 01h07
Hello

Voilà mon problème désolé si ca semble basique pour certains mais je suis pas une lumière en math :00000023:

Voila j' ai deux vecteurs au format(x,y,z)
ex (0,0,1) et (1,0,1)
Comment puis-je calculer l'angle de rotation autour de l'axe des Y qui les sépare ??
Un produit scalaire me donnerait un cos (mes vecteurs sont normés) de l angle mais comment exploiter ce dernier ?

Lightness1024!
14/11/2005, 02h52
premiere chose, les projeter sur le plan {x,z} car rien ne dit qu'ils ont la meme projection sur Y (i.e que la rotation de l'un le fera se superposer à l'autre).

donc pour ca suffit de mettre à 0 la composante Y.
à partir de là effectivement tu peux faire l'arccosinus du produit scalaire entre la normalisation de ces deux projections.

voila ce que je préconise comme code:

v1.y = 0;
v2.y = 0;
v2 = normalise(v2);
v1 = normalise(v1);
cos = produitScalaire(v1, v2);
angle = arccos(cos);
orient = produitVectoriel(v1, v2);
if (orient.y > 0) // si le repère est "main droite !" sinon mettre < 0
angle = -angle;

j'ai pas vérifié que v1 != 0 et v2 != 0 après projection parce que en float c'est rare d'avoir exactement 0 mais en étant rigoureux il vaudrait mieux car on ne peut pas normaliser un vecteur nul.

codespirit
14/11/2005, 19h00
Merci , je crois que je vai essayer de reconsidérer la manière dont je gère mes entitées , en effet il me faut reorienter les personnages a chaque frame.