使用morton代码压缩数据 - 如何?

时间:2014-03-25 15:04:20

标签: math z-order-curve

我一直在阅读有关morton代码的内容,我得到的地点在生成的数字序列中保留。

我不明白这些信息如何用于压缩数据或有效地并行构建数据。

来源:http://www.forceflow.be/2013/10/07/morton-encodingdecoding-through-bit-interleaving-implementations/

1 个答案:

答案 0 :(得分:3)

莫顿订购本身并不与数据压缩有关。它只是在内存中布局空间数据的一种方式,这样对于连续的空间块的查询往往会映射到连续的内存块 - 从而提高缓存效率。

在您引用的链接中的algorithm paper referenced中,Morton命令用于提高光盘读取的效率。写入。

该算法将复杂三角形网格转换为高分辨率体素中间表示(以Morton顺序存储),然后将该表示转换为稀疏(压缩)输出形式。

Morton顺序的一个属性是它匹配从八叉树的深度优先遍历(或2D中的四叉树)获得的顺序。这使得输出八叉树数据结构和中间体之间的方便对齐。因此,在输出八叉树中构造节点需要来自中间结构中的连续索引集的数据。这使得算法只读取给定步骤所需的数据,从而保持较低的内存占用率和缓存效率。

所以这里的Morton排序本身没有提供特定的压缩或并行化优势 - 你可以编写一个等效的算法,其压缩输出相同,在其中间使用线性排序,但它的写入和读取会更加分散,所以它可能几乎不会快速处理数据。

但如果你使用四叉树或八叉树来压缩数据,莫顿订购可以使你的数据索引更清晰,性能更高。