图的分区以定位点

时间:2015-03-27 11:28:33

标签: algorithm search graph

我有一个区域已经划分为数十个子区域(想象一个分为州的国家)。

现在我有一个点坐标,什么是最好的算法来告诉我这个点的位置是什么?

当然我可以按子区域匹配子区域,但那是愚蠢的,因为我必须平均搜索其中一半?

是否有算法确定如何将几个相邻的子区域组合在一起以方便搜索,从而优化搜索次数?

1 个答案:

答案 0 :(得分:1)

我首先要消除所有无法解决问题的领域。

假设你有一个2D笛卡尔坐标系,你有一个点作为二维矢量,这些区域被描述为它们的边界点的集合。

然后,您可以按照最小和最大xy坐标(总共4种排序方式)对区域进行排序。您可以删除所有最小x坐标大于您的点x坐标等的区域。

之后,您可以使用简单的ray-casting algorithm检查剩余的多边形,并且您应该做得很好。

如果你有一个结构可以保持区域在所有不同的方向排序,这是非常有效的,因为你可以在对数时间内消除区域。