2012-05-13 6 views
8

Ce que j'essaie de faire est de lancer un rayon de mon appareil photo. Je connais les coordonnées x, y et z de la caméra, ainsi que sa hauteur et son lacet. J'ai besoin de calculer son vecteur de direction pour pouvoir le passer à mon algorithme de lancer de rayons.Caméra Pitch/lacet à vecteur de direction

Le vecteur haut de la caméra est (0, 1, 0). "Pitch", du point de vue de la caméra, regarde de haut en bas.

(je préfère ne pas utiliser des matrices, mais je si je dois)

+0

Pourquoi l'objection aux matrices? Cela semble être la façon la plus logique de le faire pour moi. Trop déroutant, trop cher? Si vous ne faites pas de matrices, vous devrez simplement le concevoir en utilisant beaucoup de trigonométrie, ce qui finira par faire la même chose. – Tim

Répondre

10

En supposant que votre système de coordonnées est configuré de telle sorte que les conditions suivantes sont réunies:

(pitch, yaw) -> (x, y, z) 
(0,  0) -> (1, 0, 0) 
(pi/2, 0) -> (0, 1, 0) 
(0, -pi/2) -> (0, 0, 1) 

Cette volonté calculer (x, y, z):

xzLen = cos(pitch) 
x = xzLen * cos(yaw) 
y = sin(pitch) 
z = xzLen * sin(-yaw) 
+0

Génial, cela m'a beaucoup aidé: D – CyanPrime

+0

@Neil Forrester, quelle dose xzlen signifie? Où puis-je trouver la dérivation mathématique de la formule? – wangdq

+0

'xzLen' est la longueur du vecteur unitaire dans la direction désirée après sa projection dans le plan contenant les axes x et z. La formule découle directement des définitions de sin() et cos(). –

Questions connexes