filledVoxels
。我想做的是找出每个填充体素周围有多少个填充体素。以下是一个例子:
- filledVoxels包含体素(1,1,1),(1,2,1)和(1,3,1)。 - 因此,邻居计数如下:
- (1,1,1)有1个邻居 - (1,2,1)有2个邻居 - (1,3,1)有1个邻居
目前我有这个算法:
voxelCount = new Map<Voxel, Integer>();
for (voxel v in filledVoxels)
count = checkAllNeighbors(v, filledVoxels);
voxelCount[v] = count;
end
checkAllNeighbors()会查找所有26个相邻的体素。因此,总共要做26 * filledVoxels.size()次查找,这非常慢。
有没有办法减少所需的查找次数?当您查看上面的示例时,可以看到我多次检查相同的体素,因此可能可以通过一些聪明的缓存来摆脱查找。
如果有帮助的话,这些体素代表了一个体素化的三维表面(但可能存在空洞)。通常,我想获取具有5或6个相邻体素的所有体素的列表。