0

16x16x16 のブロックに分割されたボリューム (3D 画像) があります。全体のボリュームは 128x128x128 です。データは線形メモリに保存されます。すべてのブロックについて、データ全体の線形メモリ内に開始インデックスを格納します。ここで、インデックスを 16x16x16 ブロックから 128x128x128 データのインデックスに再計算する必要があります。すべてのブロックはインデックス 0、1、2、3、....4096 で繰り返され、これをグローバル リニア インデックスに変更する必要があります。

例えば。:

Block 1, index [2] => convert to index [18]
Block 1, index [18] => convert to index [146]

2D の例を画像で示します。赤い点(インデックス135)を画像全体のインデックスに変換したい。つまり、1040 +何かになります。ブロックの角の数字は、画像内の線形オフセットです。3D データの数式が必要です。 2D の例

4

1 に答える 1

0

ブロック内の座標: (Index div 256, (Index div 16) mod 16, Index mod 16)

ブロック原点の座標: (16 * (Block div 64), 16 * ((Block div 8) mod 8), 16 * (Block mod 8))

ボリューム全体の座標: (16 * (Block div 64) + (Index div 256),(16 * ((Block div 8) mod 8) + ((Index div 16) mod 16)), 16 * (Block mod 8) + (インデックス mod 16))

したがって、グローバルインデックスは

128*128*(16 * (ブロック div 64) + (インデックス div 256)) + 128 * (16 * ((ブロック div 8) mod 8) + ((インデックス div 16) mod 16)) + 16 * (ブロックmod 8) + (インデックス mod 16)

于 2012-05-09T08:57:54.967 に答える