Calculer les rotations de regarder un point 3D?

J'ai besoin de calculer les 2 angles de lacet et tangage) pour un objet 3D à faire face à l'arbitraire d'un point 3D. Ces rotations sont connus comme des "Euler" rotations simplement parce que, après la première rotation, (disons Z, basés sur l'image ci-dessous) de l'axe Y tourne aussi avec l'objet.

C'est le code que j'utilise mais sa ne fonctionne pas complètement. Lorsque sur le plan du sol (Y = 0) l'objet correctement tourne pour faire face à la point, mais dès que j'ai déplacer le point vers le haut en Y, les rotations ne regardez pas correct.

//x, y, z represent a fractional value between -[1] and [1]
//a "unit vector" of the point I need to rotate towards

yaw = Math.atan2( y, x )
pitch = Math.atan2( z, Math.sqrt( x * x + y * y ) )

Savez-vous comment calculer les 2 angles d'Euler donné un point?


L'image ci-dessous montre la façon dont je le faire pivoter. Ce sont les angles j'ai besoin de calculer.
(La seule différence est que je suis une rotation de l'objet dans l'ordre X,Y,Z et pas Z,Y,X)

pic http://i53.tinypic.com/33lo6jp.jpg

Calculer les rotations de regarder un point 3D?


C'est mon système.

  • système de coordonnées x = à droite, y = vers le bas, z = arrière
  • un objet est par défaut en (0,0,1), qui fait face vers l'arrière
  • rotations sont dans l'ordre X, Y, Z, dont la rotation sur X est la hauteur du son, Y est de lacet et Z est roll

Calculer les rotations de regarder un point 3D?

Quand vous dites "déplacer l'objet vers le haut en Y", entendez-vous "déplacer le point vers le haut en Y"? Et la manière dont est l'objet la face avant de la rotation?
Oui, c'est ce que je veux dire. L'objet est face vers l'arrière avant de rotation, comme si debout sur une table.
Bonjour @Robinicks pouvez-vous me dire où avez-vous pris la photo pic i53.tinypic.com/33lo6jp.jpg s'il vous plaît?
J'ai conçu ce graphique Adobe Flash
Bonjour @Robinicks, je l'ai mentionné ci-dessus, voir le lien ci-dessus, s'il vous plaît.

OriginalL'auteur Robinicks | 2009-08-09