我使用1D向量来表示3D数据结构,索引为0到x * y * z,其中x,y和z是每个方向上的单元格数。
为了索引特定的单元格[xi] [yi] [zi],我使用:
index = xi + x*yi + x*y*zi ;
我的问题是,我无法弄清楚如何走另一条路!
e.g。我想获得索引43中表示的各个坐标。
我想我已经找到了如何获得xi:
xi = index % x ;
但我不能为我的生活得到其他人......:/
编辑:嗯。这是对的吗?xi = index % x;
yi = ((index - xi)/x) % y;
zi = ((index - xi - x*yi) / x) / y ;
答案 0 :(得分:4)
试试这个:
xi = index % x;
yi = (index / x) % y;
zi = ((index / x) / y) % z;
这可以很容易地概括为人们所期望的。
答案 1 :(得分:1)
一些模块算术应该可以解决问题。
index % x = (xi + x*yi + x*y*zi) % x = xi % x,
but 0 <= xi < x therefore xi % x = xi.
然后为yi:
(index / x) % y = yi.
最后:
index / (x * y) = zi.
修改强>
在代码中(与上面的数学相反),它将是:
xi = index % x;
yi = (index / x) % y;
zi = index / (x * y);