1

Z インデックスを計算するためにいくつかのアルゴリズムをテストしたので、少し混乱しています。(8, 8, 8) の場合は 3584 が得られ、(7, 7, 7) の場合は 511 が得られます。これは正しいです。問題は 8*8*8 = 512 ですが、z インデックスは 3584 です。つまり、1 次元配列を使用して z インデックスで格納すると、より多くのスペースを使用することになり、空になります。配列のスロット?同様に、7*7*7 = 343 で、これは 511 よりも小さいです。ウィキペディアの z-indexing/Morton エンコーディングのページを見ると、x と y のインデックスが 0 から始まる 8*8 の 2 次元の例が見つかります。ただし、最大の z-index は 111111 であり、これは 63 であり、0 から数えると正確に 64 番目の要素であるため、64 要素を格納するために必要以上のスペースを使用しません。ここで何か問題がありますか?

ありがとう

4

1 に答える 1

1

z インデックスがある場合、最終的なインデックスは、座標が 2 のべき乗の立方体の端にある場合にのみ、通常のインデックスのインデックスと等しくなります。(7,7,7) の z-index が 511 であるという元の問題は、8*8*8 = 512 という事実と一致しています。0 の座標が含まれていることを考慮すると、(7,7,7) は実際には 8 ^3 インデックス。(3,3,3) の z-index は次のように計算できます。バイナリでは、(3,3,3) は (011,011,011) です。ビットをインターリーブすることにより、バイナリの z-index は 000111111 になります。10 進数でのこの値は 63 です。私を混乱させたのは、3*3*3 が 27 にしか等しくないことでした。 、なぜ 27 より大きいインデックスが必要なのか、3x3x3 の立方体に一部のインデックスを使用しないままにしておく必要があるのか​​疑問に思っていました。後で、これが単純に z-indexing のしくみであることを発見しました。

于 2015-12-22T00:44:56.603 に答える