如何将1d索引转换为3d索引?

时间:2013-02-13 01:39:09

标签: arrays multidimensional-array 3d indexing

我看了这个问题:Convert a 1d array index to a 3d array index?但是当我测试它时,无论我如何计算索引,我的结果都有所不同。

我使用以下内容将尺寸(宽度,高度,深度)中的3d(x,y,z)转换为1d:

i=x+WIDTH(y+HEIGHT*z)

然后从索引i转换回(x,y,z):

z=i/(HEIGHT*WIDTH)
y=(i/WIDTH)%HEIGHT
x=i%(WIDTH)

当我在两种方法之间测试时,我得到了错误的结果。我的方法有明显的错误吗?什么是正确的解释?

1 个答案:

答案 0 :(得分:3)

这是一个适用于这些值的javascript版本:

WIDTH = 10;
HEIGHT = 20;

x = 2;
y = 4;
z = 5;

=> i = 1042

代码:

i = x + WIDTH * (y + HEIGHT * z);


z = Math.round(i / (WIDTH * HEIGHT));
y = Math.round((i - z * WIDTH * HEIGHT) / WIDTH);
x = i - WIDTH * (y + HEIGHT * z);