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