【问题标题】:How do I convert a 1d index into a 3d index?如何将 1d 索引转换为 3d 索引?
【发布时间】:2015-12-19 04:11:04
【问题描述】:

我查看了这个问题: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)

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

【问题讨论】:

    标签: arrays multidimensional-array 3d indexing


    【解决方案1】:

    这是一个适用于这些值的 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);
    

    【讨论】:

    • 很好,我发现这比使用 '%' 更好,而且使用计算值更清晰。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2015-10-05
    • 2013-12-14
    • 2014-02-04
    • 1970-01-01
    • 2019-03-03
    • 2021-11-30
    相关资源
    最近更新 更多