0

這是我轉換球面座標變換給出錯誤的極角

代碼
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); 

原點= 400,400,400

點= 100,100,100

所以,向量= - 300,-300,-300

Math.toDegrees();

我的轉換算法作出了同樣的方位角和半徑在這個網站http://keisan.casio.com/exec/system/1359533867

,但該網站給我的-135極角,而我的算法給45

誰能告訴我有什麼不對?

回答

0

atan()無法返回角度的正確象限。你是通過它yDif/xDif,這是-300/-300,或1,所以它會給出相同的價值,因爲它會爲300/300

大多數語言都有一個功能atan2(yDif, xDif)這將給正確的值。它也將處理xDif爲0的情況。

+0

非常感謝!我沒有注意到這個錯誤! – Stan