0

私はこの質問を見ました: Convert a 1d array index to a 3d array index? しかし、最初にインデックスをどのように計算しても、テストすると結果が異なります。

以下を使用して、3d (x、y、z) の寸法 (WIDTH、HEIGHT、DEPTH) を 1d に変換しています。

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

次に、インデックス i から (x,y,z) に戻すには、次のようにします。

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

これを両方の方法でテストすると、間違った結果が得られます。私の方法に明らかに何か問題がありますか?正しい説明は何ですか?

4

1 に答える 1

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);
于 2013-02-13T01:47:42.960 に答える