【发布时间】:2012-12-23 05:40:50
【问题描述】:
所以我正在处理一个 3-D 场景,我需要在其中随意转换和从极坐标转换,并编写了一个函数来帮助我转换。问题是它经常导致其中一个角度的 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 ...
感谢您的宝贵时间,如果有人需要任何其他信息,请告诉我!
艾萨克
【问题讨论】:
-
x 可以为零吗?这将导致该行被零除
-
asin 仅定义为从 -1 到 1;每当 y > x 或 y 时,它都会返回 NaN
标签: javascript math 3d three.js polar-coordinates