用负值压平网格数组的公式

Formula to flatten array of grid with negative values

目前我正在使用这个公式来展平多维数组 (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);