在网格c#中查找半径范围内的节点的巧妙方法?

时间:2014-01-27 08:50:59

标签: c# grid

enter image description here

假设我们有一个类似于图像中的网格。网格还可以包含矩形节点。现在我想找到半径内与该图像上所示相同的所有节点。一种方法是检查从0,0开始的所有节点。

对于每个节点,我必须计算到节点的距离(i,j)。这需要很多时间,特别是如果节点数量巨大的话。

应该有更好的方法来做到这一点。考虑到我知道circle (node (i,j))的中心,也许我可以从i开始递归函数,而不是检查它们中的每一个。

你可以帮我找一个聪明的方法吗?

距离测量是欧几里德距离。

2 个答案:

答案 0 :(得分:1)

您可以测试圆圈边界框内的所有单元格,或者如果您想要更严格一些,请使用类似队列的数据结构执行breadth search

答案 1 :(得分:1)

我不确定与您在帖子中提到的距离方法相比,这是否会更快或更慢,但Point-In-Polygon在计算机科学中非常常见。值得尝试光线投射算法,看看它是否能提高性能。

http://en.wikipedia.org/wiki/Point_in_polygon