在笛卡尔坐标和球坐标之间转换

时间:2015-05-16 03:59:35

标签: javascript math

我需要在JavaScript中转换笛卡尔坐标和球坐标。 我在论坛上看了一下,并没有找到我想要的东西。

现在我有这个:

this.rho = sqrt((x*x) + (y*y) + (z*z));
this.phi = tan(-1 * (y/x));
this.theta = tan(-1 * ((sqrt((x * x) + (y * y)) / z)));
this.x = this.rho * sin(this.phi) * cos(this.theta);
this.y = this.rho * sin(this.phi) * sin(this.theta);
this.z = this.rho * cos(this.phi);

我使用 Spherical coordinate system Cartesian to Spherical coordinates Calculator 来获取公式。

但是我不确定我是否正确地将它们翻译成了代码。

1 个答案:

答案 0 :(得分:4)

有很多错误

要在整个范围内获得正确的Phi值,您必须使用ArcTan2函数:

this.phi = atan2(y, x);

对于Theta使用反余弦函数:

this.theta = arccos(z / this.rho);

向后转换 - 你已经交换了Phi和Theta:

this.x = this.rho * sin(this.theta) * cos(this.phi);
this.y = this.rho * sin(this.theta) * sin(this.phi);
this.z = this.rho * cos(this.theta);`