2

我使用 1D 向量来表示 3D 数据结构,索引为 0 到 x*y*z,其中 x、y 和 z 是每个方向上的单元格数。

为了索引特定的单元格 [xi][yi][zi],我使用:

index = xi + x*yi + x*y*zi ;

我的问题是,我无法弄清楚如何走另一条路!

例如,我想获得索引 43 中表示的各个坐标。

我想我已经弄清楚了如何获得 xi:

xi = index % x ;

但我不能为我的生活得到其他人......:/

编辑:嗯。这是正确的吗?

xi = index % x;
yi = ((index - xi)/x) % y;
zi = ((index - xi - x*yi) / x) / y ;
4

2 回答 2

4

试试这个:

xi =   index % x;
yi =  (index / x) % y;
zi = ((index / x) / y) % z;

正如人们所期望的那样,这很容易概括。

于 2012-04-14T17:57:37.940 回答
1

一些模运算应该可以解决问题。

    index % x = (xi + x*yi + x*y*zi) % x = xi % x,
    but 0 <= xi < x therefore xi % x = xi.

然后对于易:

    (index / x) % y = yi.

然后最后:

    index / (x * y) = zi.

编辑:

在代码中(与上面的数学相反)它将是:

    xi = index % x;
    yi = (index / x) % y;
    zi = index / (x * y);
于 2012-04-14T17:54:38.383 回答