八叉树中指定半径范围内的范围搜索

时间:2011-08-15 16:31:21

标签: octree

我对粒子算法感兴趣,比如N-Body和SPH。在给定查询点的情况下,这些应用程序中的一个重要步骤是找到粒子 位于半径为'h'的指定球体内。

现在我听说Octants是N-body或SPH等问题的良好空间数据结构。

但是在八叉树构造之后,我无法理解如何执行“在半径内定位粒子”步骤。有人可以指点我做这一步的一些参考文献,论文或文章吗?

2 个答案:

答案 0 :(得分:1)

猜测Octree包含3dPoint对象: “在点p的半径3内定位粒子”可以表示为 “返回八面体中包含的与球体接触或相交的所有点(中心p,半径r)” 测试单元格是否与球体相交:

dx,dy,dz = 0;
if (pX < minX of Cell)
    dx = |px - minX|
else if (px > maxX of Cell)
    dx = |px-maxX|
Same for other dimensions

return (|dx,dy,dz|<=r)

答案 1 :(得分:0)

k-d trees也是用于此目的的良好数据结构,通常用于最近邻搜索。