2010-06-11 11 views
1

J'essaye de coder une fonction pour une caméra qui tourne autour d'un point. Supposons un plan de coordonnées 3D où Z est en haut. Ignorer Z.Fonction permettant d'obtenir la position X, Y d'un objet en orbite autour d'un point, compte tenu de la distance et de l'angle en radians?

Disons que la position de la caméra commence à (0, 0, z). L'objet à orbiter est à, disons (50, 50, z). Nous avons donc une distance de ~ 70 unités. Appeler la fonction avec {(50, 50, z), 70, x} où x est la position en orbite, en radians, devrait revenir où la position de la caméra devrait être.

Je crois que cela implique cos et tan mais mon Trig est pas terrible ...

point3d getCameraPosition(point3d objectPosition, float distance, float rotationRadians) 
{ 
    // ??? 
} 

Répondre

3
return position + Point(distance*cos(angle), distance*sin(angle)) 
+3

Depuis ses points sont 3d, vous devriez probablement ajouter ', 0' à la fin, avant la parenthèse fermante. – rlbond