【发布时间】:2011-07-28 18:12:06
【问题描述】:
我想在给定球体上选择随机点。这个页面解释得很好:
http://mathworld.wolfram.com/SpherePointPicking.html (“要获得点,使得球体上的任何小区域......”)
但我不完全确定我是否在 JavaScript 中正确实现它,因为我几乎没有办法正确测试它:
var u = random();
var v = random();
var angle1 = 2 * Math.PI * u;
var angle2 = Math.pow(Math.cos (2 * v - 1), -1);
X = X0 + (radius * Math.sin(angle1) * Math.cos(angle2));
Y = Y0 + (radius * Math.sin(angle1) * Math.sin(angle1));
Z = Z0 + (radius * Math.cos(angle1));
我特别不确定我是否正确理解了 cos(-1),我将其实现为“-1 的余弦”。
【问题讨论】:
-
"cos^-1" 表示“反余弦”,又名“arccos”(或“acos”)。
-
您可以通过确保
sqrt(x^2+y^2+z^2)(没有x0/y0/z0偏移)等于半径 +/- 浮点的小公差来部分测试答案错误。
标签: javascript random 3d geometry