2009-06-09 10 views
23

Donc, venant d'un arrière-plan flash, j'ai une bonne compréhension de certains trig simple 2D. En 2D avec I cercle, je connais les maths pour placer un objet sur le bord en fonction d'un angle et d'un rayon en utilisant.Tracer un point sur le bord d'une sphère

x = cos(a) * r; 
y = sin(a) * r; 

Maintenant, si j'ai un point dans l'espace 3D, je sais que le rayon de ma sphère, je sais que l'angle que je veux positionner autour de l'axe z et l'angle que je veux sa position autour de, disons, l'axe y. Quel est le calcul pour trouver les coordonnées x, y et z dans mon espace 3d (supposons que mon origine est 0,0,0)? Je pense que je pourrais emprunter les maths du cercle trig, mais je n'arrive pas à trouver une solution.

Répondre

58

Your position en 3D est donnée par deux angles (+ rayon, qui, dans le cas est constante)

x = r * cos(s) * sin(t) 
y = r * sin(s) * sin(t) 
z = r * cos(t) 

ici, s est l'angle autour de l'axe z, et t est l'angle hauteur, mesuré à partir de l'axe z.

Le tableau ci-dessous montre que les angles représentent, s = thêta dans la plage allant de 0 à 2 * PI dans le plan xy et phi t = dans la plage de 0 à PI.

enter image description here

+5

Ne pas oublier que 's' et' t' doivent être en radians, * degrés pas *. Pour convertir en radians: 'radians = angleInDegrees * Math.PI/180'. – Sam

+0

Si s = 45deg et t = 0deg, alors (x, y, z) = (0,0,1). Mais quand nous le cartographions, nous obtiendrions (0, 0.707, 0.707) à droite? x et y donnent toujours zéro quand t est nul et z est indépendant de s ...! Que dois-je faire pour bien faire les choses? –

+0

Ne devrions-nous pas être en mesure de balayer exactement un cercle avec t verrouillé à 0 et variant s? Ici, ça ne marche pas comme ça, quand t est zéro, quelle que soit la valeur de s, (x, y, z) est toujours (0,0,1) –

Questions connexes