查找区域内的格点数

时间:2013-02-04 13:52:52

标签: computational-geometry kdtree

给定二维平面中的一组点,如何找到任意三角形上或内部的点数 一种方法是检查所有点是否位于给定三角形内 但是我读到Kd-tree可以用来在O(log n)时间内找到一个区域内的点数,其中'n'是点数。但我不明白如何实现这一点。
还有其他更简单的方法吗?
或者kd-tree会起作用吗?如果是这样,有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

可以通过递归检查子分区的位置到三角形来完成。要查看树节点的哪些点在三角形中,请检查每个节点分区(k-d树中有2个)是三角形中的整体,是三角形之外还是三角形相交。如果分区是三角形而不是将该分区中的点数添加到结果中,如果分区超出三角形而不是对该分区执行任何操作,则如果分区与三角形相交,则检查该分区的子分区。

为此,每个树节点必须在其子树中存储点数,这在树创建中很容易。

运行时间取决于具有分区边界的三角形边的多个交点。在最糟糕的情况下,我不确定是O(log n)