我对粒子算法感兴趣,比如N-Body和SPH。在给定查询点的情况下,这些应用程序中的一个重要步骤是找到粒子 位于半径为'h'的指定球体内。
现在我听说Octants是N-body或SPH等问题的良好空间数据结构。
但是在八叉树构造之后,我无法理解如何执行“在半径内定位粒子”步骤。有人可以指点我做这一步的一些参考文献,论文或文章吗?
答案 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也是用于此目的的良好数据结构,通常用于最近邻搜索。