2010-02-07 13 views
0

J'ai deux coordonnées sur un plan 2D dans l'espace 3D et j'essaie de faire pivoter une coordonnée (un vecteur) pour faire face à l'autre coordonnée. mon axe vertical est l'axe des y, donc si les deux coordonnées sont à plat sur le plan 2D, elles auront toutes les deux un axe y de 0, et leurs coordonnées x et z déterminent leur position longueur/largeur sur le plan. avion. En ce moment, je suis calcul de l'angle comme si (langue agnostique):Rotation vers un objet dans l'espace 3D

angle = atan2(z2-z1,x2-x1); 

et je rotation/traduction dans l'espace comme si:

pushMatrix(); 
rotateY(angle); 
popMatrix(); 

cela ne semble pas fonctionner bien. mes calculs/processus sont-ils corrects?

+1

"J'ai deux coordonnées sur un plan 2d" "et j'essaie de faire pivoter une coordonnée (une image) pour faire face à l'autre coordonnée" A) comment une coord peut-elle être une image? B) comment une coordonnée "Face" peut-elle quelque chose? –

+0

désolé, au lieu de "une image", il devrait être "un vecteur". – retoucher

+0

"le 2ème plan"? Peux-tu être plus précis? –

Répondre

0

Je ne comprends pas vraiment votre question (voir mon commentaire) mais si vous cherchez la différence d'angle en radians entre deux vecteurs, prenez l'arc cos de leur produit scalaire. Les vecteurs dans le produit scalaire doivent être normalisés.

Vous utilisez le bronzage, soit je n'obtiens pas ce que vous essayez de faire, soit l'utilisation du bronzage est mauvaise.