假设您有一个以(x,y)为中心,半径为r的圆,并想在四叉树中找到该圆中的所有点。一种想法如下:
构造一个刻有圆圈的边界框。这是包含该圆的最小矩形,其左上角(x-r,y-r)和右下角(x + r,y + r)。圆中的任何点也必须在正方形中,但不能相反。
在四叉树中查询位于该矩形中的点集。让这些点成为P。
对于已知在矩形中的P中的每个点,请查看是否也在圆中。您可以通过检查该点到(x,y)的距离是否不大于r来实现。换句话说,给定一个点(x 0,y 0),您将计算(x-x 0)2 +(y-y 0)2,如果该值小于或等于r 2,则该点包含在圈子中。
尽管这似乎效率低下,但实际上速度很快。正方形的面积与圆的面积之比为4 /π。1.27。换句话说,假设您的点分布比较均匀,您只会发现比需要多27%的点。



