javascript - 笛卡尔坐标到极坐标导致 NaN

标签 javascript math 3d three.js polar-coordinates

所以我正在研究一个 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/

相关文章:

math - 光子映射的渲染方程

javascript - 如何解决未捕获的类型错误: Cannot set property 'value' of undefined error in javascript?

javascript - 使用 Javascript 变量作为 EJS 数组的索引 - NODEJS

math - 您需要在 Windows 框中输入 10,000 位 e

math - 数字转换的一般方法?

opencv - 使用已知的相机位置和矩阵查找 3D 对象位置

javascript - 数据应该在后端还是前端格式化?

javascript - 使用 PHP 和 JQuery 创建幻灯片

c++ - Leetcode 中的完美正方形

ios - Ipad 上网络浏览器中的 3D