javascript-我的Webworkers似乎计算不正确

我正在编写一个JavaScript应用程序,以在球体表面上生成随机点.我在Wolfram上找到了这个公式来得到phi和theta(http://mathworld.wolfram.com/SpherePointPicking.html#eqn2). Phi是我遇到phi = cos ^(-1)(2v-1)的问题,其中v是(0,1)的随机变量.以下是我编写的用于计算phi的JavaScript.但是,在执行时,它经常返回NaN.谁能告诉我是否误解了该公式?我唯一能想到的是Math.random()生成(0,1],而0可能引发错误.但是在运行多个测试时,我不认为Math.random()每次都会生成0.执行该行.

var phi = Math.acos(2 *(Math.random())*-1);

解决方法:

这是因为大于1的反余弦(Math.acos()函数)返回NaN,而Math.random()* 2有时返回大于1的数字.

怎么修?

我看到数学cos ^(-1)(2v-1)

v = someValue;

Math.acos(2 * v) - 1;

为此,您可能想要

phi = Math.acos(2 * Math.random() - 1);

作为您的Javascript代码.

结论:

要修复,您需要做的就是更换

phi = Math.acos(2 * Math.random()*-1);

phi = Math.acos(2 * Math.random()-1);

(删除* -1)

上一篇:javascript-将整个Object3D / Mesh层次结构合并在一起


下一篇:Python Tkinter:尝试获取小部件大小