Java 使用四叉树获取边界圆内的所有点
我有一组100到200点(x,y)。我必须检查哪些落在与其他落在特定距离内。整个程序的特定距离是固定的,例如50。假设第1点在第5点、第7点、第25点、第90点、第96105点……等范围内。同样,第2点在23,45等范围内。。。 这里建议使用四叉树,但它可以用来获取一个边框内的所有点。但是如何获得一个边界圆内的所有点呢?有一种方法可以返回最大距离内最接近lat/long的点,但如何获取该距离内的所有点?Java 使用四叉树获取边界圆内的所有点,java,algorithm,data-structures,quadtree,Java,Algorithm,Data Structures,Quadtree,我有一组100到200点(x,y)。我必须检查哪些落在与其他落在特定距离内。整个程序的特定距离是固定的,例如50。假设第1点在第5点、第7点、第25点、第90点、第96105点……等范围内。同样,第2点在23,45等范围内。。。 这里建议使用四叉树,但它可以用来获取一个边框内的所有点。但是如何获得一个边界圆内的所有点呢?有一种方法可以返回最大距离内最接近lat/long的点,但如何获取该距离内的所有点? 一种可能的方法是在我得到每个点时将其从树中移除,然后再次查询最近的点,直到我得到null
一种可能的方法是在我得到每个点时将其从树中移除,然后再次查询最近的点,直到我得到null。这是唯一的方法吗?假设你有一个以(x,y)为中心半径为r的圆,并且想要找到圆中四叉树中的所有点。一个想法如下:
虽然这看起来效率很低,但实际上相当快。正方形面积与圆形面积之比为4/π&近似值;1.27. 换句话说,假设你的分数分布比较均匀,你只会发现比你需要的分数多27%。好主意,明白了。在边界矩形中几乎没有10个点。所以你的方法似乎是合理的。使用四叉树是查询边界圆内所有点的最快方法吗?有各种空间数据结构,如四叉树,包括kd树和R树。如果你对“给我这个圈子里的一切”特别感兴趣,四叉树绝对是个不错的选择。如果你想问一些问题,比如“给我五个离空间中某个特定点最近的点”,那么kd树是一个很好的选择。但是,对于您所描述的,四叉树应该是完美的。我只处理圆。我认为封闭矩形的角在+/-r*sqrt(2)处。我还想知道是否有一种更直接的方法可以做到这一点——它绝对不会对测地纬度/经度和更多点进行缩放,而位掩码会做得更好。只是找不到如何应用。@templatetypedef您能解释一下第二条吗?如何找到矩形中的点?