我将世界分成 X 个随机多边形。
然后我得到一个坐标 C1,例如 (-21.45, 7.10),我想将正确的多边形归因于这个坐标。
第一个解决方案是point_in_polygon在每个多边形上应用我的 ' ' 算法(给定一组定义多边形的坐标和一个定义点的坐标,告诉我该点是否在内部)直到我找到正确的一个。但是如果我有很多点可以放入很多多边形,那将是非常昂贵的。
对此的改进依赖于以下想法:为了优化搜索,我创建了一个grid(集合),步骤为n, k,其中我已经对每对坐标进行了属性,使得:
for i=-180 to 180 step n
for j = -90 to 90 step k
grid.add(i,j)
然后我创建一个字典,对于集合中的每一对,我找到相应的多边形
For each g in grid
For each p in polygons
If point_in_polygon(g,p) == True
my_dict(g) = p
然后,当我收到 C1 时,我会在我的网格中寻找最近的坐标,比如说 g1。多亏了 my_dict,我可以快速得到p1 = my_dict(g1) 然后我计算point_in_polygon(C1, p1)哪个可能是真的。如果不是,我会找到分配给不同多边形的最接近的 g,然后重做测试。等等,直到我找到正确的多边形。
现在,问题是:创建网格的最佳 n、k 是多少?
这样我就可以在最少的步骤中找到正确的多边形。我不希望它太低,因为搜索分配给不同多边形的最近 g 可能很昂贵。我也不希望它太高,因为那样我可能会丢失一些多边形,然后搜索永远不会收敛。
我的直觉是最小的多边形将给出步骤。
我不确定这是一个编程问题,一个数学问题,还是我可以凭经验找到的问题,这就是我在这里问的原因。
互换的青春
慕容森
相关分类