我需要一种算法,它可以为我在一个球体周围提供 N 个点(可能小于 20 个)的位置,从而模糊地将它们分散开来。不需要“完美”,但我只需要它,所以它们都不会聚集在一起。
我遇到的其他一些问题线程谈到了随机均匀分布,这增加了我不关心的复杂程度。我很抱歉这是一个如此愚蠢的问题,但我想表明我真的很努力,但仍然做不到。
所以,我正在寻找的是简单的伪代码,可以在一个单位球体周围均匀分布 N 个点,它要么以球面坐标返回,要么以笛卡尔坐标返回。如果它甚至可以通过一点随机化来分布,那就更好了(想想恒星周围的行星,分布得体,但有余地)。
在此示例中,代码 node[k]只是第 k 个节点。您正在生成一个数组 N 个点并且node[k]是第 k 个(从 0 到 N-1)。如果这就是让您感到困惑的全部,希望您现在可以使用它。
node[k]
(换句话说,k是在代码片段开始之前定义的大小为 N 的数组,其中包含点列表)。
k
或者 ,基于此处的另一个答案(并使用 Python):
> cat ll.py from math import asin nx = 4; ny = 5 for x in range(nx): lon = 360 * ((x+0.5) / nx) for y in range(ny): midpt = (y+0.5) / ny lat = 180 * asin(2*((y+0.5)/ny-0.5)) print lon,lat > python2.7 ll.py 45.0 -166.91313924 45.0 -74.0730322921 45.0 0.0 45.0 74.0730322921 45.0 166.91313924 135.0 -166.91313924 135.0 -74.0730322921 135.0 0.0 135.0 74.0730322921 135.0 166.91313924 225.0 -166.91313924 225.0 -74.0730322921 225.0 0.0 225.0 74.0730322921 225.0 166.91313924 315.0 -166.91313924 315.0 -74.0730322921 315.0 0.0 315.0 74.0730322921 315.0 166.91313924
如果你绘制它,你会看到两极附近的垂直间距更大,因此每个点都位于大约相同的空间总 面积 中(在两极附近,“水平”空间较小,所以它给出了更多“垂直” )。
这与与邻居距离大致相同的所有点不同(我认为您的链接正在谈论),但它可能足以满足您的需求,并且只需制作统一的纬度/经度网格即可.