所以我正在研究一个 3D 场景,我需要随意在极坐标之间进行转换,并编写了一个函数来帮助我进行转换。问题在于,它经常导致其中一个 Angular 出现 NaN。我使用的功能如下:
toPolar: function(x,y,z){
var sqrd = (x*x)+(y*y)+(z*z)
var radius = Math.pow(sqrd,.5)
var theta = Math.acos(z/radius)
var phi = Math.asin(y/x)
var toReturn={
r:radius,
t:theta,
p:phi
}
return toReturn
}
Phi 是返回 NaN 的东西,虽然我虽然知道它在哪里导致 NaN,但它似乎发生在整个场景的某些点
您可以在这里看到问题: http://cabbibo.com/sketches/audioSketch3/
在左上角您可以看到相机的极坐标和笛卡尔坐标,极坐标的最后一部分 (phi) 有时会显示为 NaN。
我认为我的数学有某种问题,因为我不太擅长数学,但看起来这可能是一个不同的问题,比如我不明白如何使用 Math.asin ...
感谢您的宝贵时间,如果有人需要任何其他信息,请告诉我!
艾萨克
最佳答案
如果您期望 phi 像方位 Angular (例如,在水平面上,-pi -> pi),您应该使用 atan2。
var phi = Math.atan2(y,x);
关于javascript - 笛卡尔坐标到极坐标导致 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14006618/