【问题标题】:Morton Encoding Z-indexing Space Usage莫顿编码 Z 索引空间使用
【发布时间】:2016-02-12 06:01:36
【问题描述】:

我有点困惑,因为我测试了几种算法来计算 z 索引,对于 (8, 8, 8) 我得到 3584,对于 (7, 7, 7) 我得到 511,这是正确的。问题是 8*8*8 = 512,但是 z-index 是 3584。这意味着如果我使用一维数组按 z-index 存储东西,我不会使用更多空间并且会有空阵列中的插槽?同样 7*7*7 = 343,小于 511。如果您在维基百科页面上查看 z-indexing/Morton 编码,您会发现一个 8*8 的二维示例,其中 x 和 y 的索引从 0到 7。但是,最大的 z-index 是 111111,即 63,从 0 开始编号时正好是第 64 个元素,因此它不会使用超过存储 64 个元素所需的空间。这里有什么问题吗?

谢谢

【问题讨论】:

    标签: arrays indexing z-order-curve space-filling-curve


    【解决方案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。这个十进制值是63。让我感到困惑的是3 * 3 * 3仅等于27 ,我想知道为什么我需要一个大于 27 的索引,而为 3x3x3 的立方体留下一些未使用的索引。后来我发现这就是 z-indexing 的工作原理。仅对于边长等于 2 的完美幂的立方体,每个 z-index 的坐标都为

    【讨论】:

      猜你喜欢
      • 2015-07-22
      • 2020-08-03
      • 2017-07-03
      • 2015-07-12
      • 2012-04-25
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多