标签: algorithm data-structures graph voxel neighbours
我正在通过大致这样做来创建一个“邻居图”:
for every voxel look at every other unseen voxel check if neighbours
大致以n平方(减去n)运行。对于一定数量的体素是可以接受的,但显然需要更长的时间来使用更大的列表。
另一个天真的解决方案就是将所有内容放入一个大的3d数组或一个散列映射中,这个数组将以O(n)运行,但代价是更多的内存。
有更快的方法吗?我似乎无法在谷歌中输入正确的搜索条件......
答案 0 :(得分:4)
您可能希望查看octree或k-d tree结构等空间分区树。这些结构通常可以非常有效地构建(O(n)或O(n log n),IIRC),然后提供极快的查找以查找给定边界框内的最近邻居或点。使用其中一种结构可以为您提供巨大的性能提升,而不会产生巨大的3D阵列的巨大内存成本。
希望这有帮助!