0

Ceci est mon code pour la conversionconversion de coordonnées sphériques donne un mauvais angle polaire

double xDif = point.getX() - origin.getX(); 
double yDif = point.getY() - origin.getY(); 
double zDif = point.getZ() - origin.getZ(); 
double radius = Math.sqrt((xDif * xDif) + (yDif * yDif) + (zDif * zDif)); 
double azimuthalAng = Math.acos(zDif/radius); 
double polarAng = Math.atan(yDif/xDif); 
return new SpherePoint(radius, azimuthalAng, polarAng); 

origine = 400, 400, 400

points = 100, 100, 100

donc, vecteur = - 300, -300, -300

Math.toDegrees();

mon algorithme de conversion a donné le même angle azimutal et rayon que ce site http://keisan.casio.com/exec/system/1359533867

mais le site m'a donné un angle polaire de -135, alors que mon algorithme a 45

quelqu'un peut me dire ce qui ne va pas?

Répondre

0

atan() ne peut pas renvoyer le quadrant correct pour l'angle. Vous passez ce yDif/xDif, qui est -300/-300, ou 1, donc il donnera la même valeur que ce serait pour 300/300.

La plupart des langues ont une fonction atan2(yDif, xDif) qui donnera la valeur correcte. Il traitera également le cas où xDif est 0.

+0

Merci beaucoup! Je n'ai pas remarqué cette erreur! – Stan