我的Webworkers似乎计算不正确

gr4yf0x

我正在编写一个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()函数)的数字的反余弦返回NaNMath.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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章