我正在寻找一种支持查找“n”个区域中的哪个包含点“p”的数据结构。我正在查看 Quadtree 和 R-tree,但我认为它们并不完全符合我的要求。
本质上,我希望能够向这棵树添加一些 3 维矩形区域,然后能够针对这棵树测试一个 3 维点并返回哪个区域最严格地约束该点。没有区域会有重叠的边界。
我目前使用的简单算法是针对每个矩形区域的每个维度简单地测试点“p”。
for(region in regionList):
if(p.x > region.x1 && p.x < region.x2 && p.y > region.y1 && py < region.y2 && p.z > region.z1 && p.z < region.z2)
return region
end
这在 O(n) 时间内运行,其中 n 是区域数。我希望搜索将 O(log n) 作为四叉树用于查找 2d 点的点。