如何随机选择地球表面上的一个点?

时间:2011-06-17 18:14:34

标签: algorithm geolocation

正如标题所说,如何在没有偏见的情况下随机选择地球表面上的坐标?做rand(-90,90),rand(-180,180)的简单解决方案将有利于赤道地区的极区。

2 个答案:

答案 0 :(得分:7)

听起来你正在寻找uniform random distribution on a sphere

enter image description here

在球坐标中:

θ = 2π * rand(0,1)
Φ = arccos(1 - 2*rand(0,1))

答案 1 :(得分:2)

阿基米德证明了一个漂亮的定理,即球体上一个区域的面积等于该区域在外接圆柱体的曲面上的水平投影面积(因此特别是整个球体的面积是等于外接圆柱体的整个曲面的面积)。您可以通过绘制小“矩形”(以纬度和经度线为界)并为那些证明它来说服自己,然后观察(非正式地)在极限情况下,所有东西都用足够小的矩形近似,或者更正式地表示该区域区域被定义为某种积分,即(感谢勒贝格)一系列矩形的限制。

所以,如果你在圆柱体的曲面上选择一个随机均匀分布的点(很容易,因为它与矩形等距),然后将该点水平投影回球体,你的分布将具有概率属性任何地区的一个点与该地区的面积成正比。

这意味着在范围(-pi,pi)中统一选择经度,并将纬度设置为arccos(y) - pi/2,其中y均匀分布在范围(-1,1)中。

由于arccos使用的任何浮点类型的精度(缺乏),您仍会有一个小的偏差。我不确定这是否会引人注意,但如果你想修复它,你可以使你的y值更接近+/- 1(实际上是通过在小数点后产生更多位)。或者更确切地说,将范围拆分为两个,生成接近0的额外位,然后使用准确的arccos_1_minus_x函数。