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.
vBulletin® v.3.6.5, Copyright ©2000-2009, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org