我在 3D 网格上使用 morton 编码,以便一组点 (x,y,z) 给我一个 morton 编码 M(x,y,z) 的 1D 数组,其中 x,y,z 是整数。对于每个 M(x,y,z),我的计算还需要网格上的 26 个最近邻,即。M(x-1,y-1,z-1), M(x-1,y-1,z+0), M(x-1,y-1,z+1), M(x-1 ,y+0,z-1)...
我的问题是,我如何直接从 M(x,y,z) 计算这些邻居编码?我知道维基百科有一个二维 8 位整数的解决方案:
M(x,y-1) = ((M(x,y) & 0b10101010) - 1 & 0b10101010) | (M(x,y) & 0b01010101)
3 维网格的等效算法是什么样的?