将带有负值的网格数组扁平化的公式

问题描述 投票:0回答: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。

谢谢!

c# arrays math graph formula
1个回答
0
投票

如果

[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);
© www.soinside.com 2019 - 2024. All rights reserved.