推 linked:謝謝你,我了解了^^ 02/12 13:23
※ 引述《linked (13時)》之銘言:
: 請問各位大大,
: 我寫了一個程式如下,
: 將直角座標轉成球體座標,
: 再將球體座標轉回直角座標,和原來的直角座標相比,
: 正負號都變了,~.~
: 請各位大大幫我看看哪邊有錯誤,謝謝~
: fi = Math.atan(y/x);
http://zh.wikipedia.org/wiki/%E7%90%83%E5%BA%A7%E6%A8%99%E7%B3%BB
"特別注意,必須依照 y/x 正確的象限來定義反正切值"
tan(θ)=y/x,從y/x求θ角:
若(x,y)在第1象限,則0<θ<π/2
(x,y)在第2象限,則π/2<θ≦π
(x,y)在第3象限,則-π<θ<-π/2
(x,y)在第4象限,則-π/2<θ< 0
public static void main(String[] args) {
double x = -70, y =0.7, z = -16;
double r = Math.sqrt(x*x+y*y+z*z);
double fi = Math.acos(z/r);
double theta = Math.atan2(y,x);
double xx = r*Math.sin(fi)*Math.cos(theta);
double yy = r*Math.sin(fi)*Math.sin(theta);
double zz = r*Math.cos(fi);
System.out.println("x="+xx+",y="+yy+",z="+zz);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.96.209