当前,我正在使用此公式来展平多维数组(x,y,z):
array = new byte[GridSizeX*GridSizeY*GridSizeZ];
index = x + y * GridSizeX+ z * GridSizeX* GridSizeY;
我想知道如何使它适用于x,y和z的负值,因为索引不能为负值,因此该公式不适用于例如单元格(-1,2 ,3)。
是否有一个干净的公式可以考虑x,y,z的各种范围(也包括非均匀范围)?
例如,minX = -5,maxX = 7 / minY = -2,maxY = 3 // minZ = -4,maxZ = 6。
谢谢!
如果
[x
在[minX..maxX]
中
[y
在[minY..maxY]
中
[z
位于[minZ..maxZ]
中
从零开始的公式>> index
将为
index = (x - minX) +
(y - minY) * (maxX - minX + 1) +
(z - minZ) * (maxX - minX + 1) * (maxY - minY + 1);