如果在圆圈内,则选择点的子集

时间:2012-11-19 16:05:20

标签: algorithm

想象一下像订单10M这样的很多点。

现在我在给定的空间中随机画一个圆圈。

此圆圈现在将根据中心和半径包围一些点。

现在,我想选择此圈内存在的所有点。

蛮力方法效率很低。

有没有更好的方法来解决这个问题。

P.S-我在python中编码。

由于

编辑: 蛮力方法:

从空间中选择一个点,计算距离中心的距离,如果它小于半径,则它位于其他外部。

蛮力是,我必须通过所有点,这是问号,因为在下一次迭代中我将再次选择随机点并重复上述步骤。这就像O(n ^ 2 ).. 我能做得更好吗?

1 个答案:

答案 0 :(得分:2)

在某些空间分区结构中预先安排点。

例如,四叉树。遍历树。由于每个节点对应于平面上的正方形,您可以快速检查该正方形是否与您的圆相交(圆圈内至少有一个角或圆形完全在正方形内)。如果它确实相交,则继续遍历该节点,如果它不相交,则跳过它的所有子节点,可能会消除对该节点中的点的大量单独检查。