我有一个 3D 点云,我想有效地查询距任意点 p 距离 d 内的所有点(这不一定是存储的点云的一部分)
查询看起来像
Pointcloud getAllPoints(Point p, float d);
什么加速结构适合这个?范围树似乎只适用于查询矩形体积,而不是球体体积(当然我可以查询球体的边界框,然后整理出所有距离大于 d 的顶点 - 但也许有更好的方法这个??)
谢谢!
根据 Novelocrats 的建议,我尝试定义结构所需的功能:
SearchStructure Create(Set<Point> cloud)
Set<Point> Query(SearchStructure S, Point p, float maxDistance)
SearchStructure Remove(Point p)
SearchStructure Insert(Point p)
SearchStructure Displace(Set<Point> displacement) //where each value describes an offsetVector to the currently present points
通常,在 n 次查询之后,这些点会发生位移,并且会进行一些(不是很多!)插入和删除。与所有点的边界框相比,偏移向量非常小