Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 莫顿编码Z索引空间的使用_Arrays_Indexing_Z Order Curve_Space Filling Curve - Fatal编程技术网

Arrays 莫顿编码Z索引空间的使用

Arrays 莫顿编码Z索引空间的使用,arrays,indexing,z-order-curve,space-filling-curve,Arrays,Indexing,Z Order Curve,Space Filling Curve,我有点困惑,因为我已经测试了一些算法来计算z指数,对于(8,8,8)我得到3584,对于(7,7,7)我得到511,这是正确的。问题是8*8*8=512,而z索引是3584。这意味着,如果我使用一个一维数组来按z索引存储东西,我是否会使用更多的空间,并且数组中会有空的插槽?类似地,7*7*7=343,小于511。如果您在wikipedia页面上查看z-indexing/Morton编码,您会发现一个二维示例,它是8*8,索引x和y从0到7。但是,最大的z索引是111111,即63,从0开始编号时

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


感谢

事实证明,如果坐标位于二次方幂的边上,当使用z索引时,最终索引将仅等于常规索引的索引。原始版本(7,7,7)的z指数为511,这与8*8*8=512的事实一致。考虑到包括0的坐标,(7,7,7)实际上是8^3索引。(3,3,3)的z指数可计算如下。在二进制中,(3,3,3)是(011011011),通过交错位,二进制中的z索引是00011111。这个十进制值是63。让我困惑的是,3*3*3只等于27,我想知道为什么我需要一个大于27的索引,而对于一个3x3的立方体,有些索引没有使用。我后来发现这就是z索引的工作原理。只有边长等于2的完美幂的立方体,每个z指数的坐标才是