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.

次にyiの場合:

    (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 に答える