2009-06-09 13 views
23

Quindi, proveniente da uno sfondo in flash, ho una buona comprensione di alcuni semplici trigonometria 2D. In 2d con I circle, conosco la matematica per posizionare un oggetto sul bordo dato un angolo e un raggio usando.Tracciare un punto sul bordo di una sfera

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

Ora, se ho un punto nello spazio 3D, so che il raggio della mia sfera, so che l'angolo voglio posizionarlo attorno all'asse Z e l'angolo voglio posiziono in giro, per esempio, l'asse y. Qual è la matematica per trovare le coordinate x, ye z nel mio spazio 3d (supponiamo che la mia origine sia 0,0,0)? Penso che potrei prendere in prestito il Math dal cerchio trig ma non riesco a trovare una soluzione.

risposta

58

sei in 3d è data da due angoli (+ raggio, che nel suo caso è costante)

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

qui, s è l'angolo intorno all'asse z, e t è l'angolo altezza, misurato 'in basso' dall'asse z.

La foto sotto mostra quanto gli angoli rappresentano, s = theta nell'intervallo 0 a 2 * PI nel piano xy, e t = phi nell'intervallo 0 a PI.

enter image description here

+5

Non dimenticate che 's' e' t' bisogno di essere in radianti, * gradi non *. Per convertire in radianti: 'radians = angleInDegrees * Math.PI/180'. – Sam

+0

Se s = 45deg e t = 0deg, allora (x, y, z) = (0,0,1). Ma quando effettivamente lo mappiamo, otterremmo (0, 0.707, 0.707) giusto? x e y danno sempre zero quando t è zero e z è indipendente da s ...! Cosa dovrei fare per farlo bene? –

+0

Non dovremmo essere in grado di spazzare esattamente un cerchio con t bloccato a 0 e variando s? Qui, non funziona così, quando t è zero, indipendentemente dal valore di s, (x, y, z) è sempre (0,0,1) –

Problemi correlati