带有越界限制的Z-索引
问题描述:
我需要从平面上的2个坐标x,y中计算一个点上的Z指数(Morton)。带有越界限制的Z-索引
传统上这只是通过位交织来解决的。
但是我有界限,我希望点的z-index只在活动区域内增加morton计数,并在外部跳过计数。
需要明确的是,在一个4x4正方形典型的Z顺序是:
| 0 1 4 5 |
| 2 3 6 7 |
| 8 9 12 13 |
| 10 11 14 15 |
但是,如果我有一个3x3的活动区域,我想这样来计算的指标:
| 0 1 4 x |
| 2 3 5 x |
| 6 7 8 x |
| x x x x |
正如你所看到的00-11四分满,02-13跳过有效区域以外的2个点的计数,20-31和22-33相同。
重要提示:我想不做迭代。
这个问题有没有已知的解决方案?
答
我能得到答案的问题上https://fgiesen.wordpress.com/2009/12/13/decoding-morton-codes/
要处理的矩形区域,集齐所有尺寸最接近2的功率和线性包长轴。
例如,在endcoding矩形5x4的点(2,3)如下,
四舍五入至5×4的2个结果4,4即3和2位
编码点2,3 最近的电源首先交叉0b010的2位,0b11得到0b1110,x维的第3位变成结果的第5位。
编码4,2, 0b100时,0b11变得0b11010
为了找到3×3区域的z顺序,使用以上上述方法 而生成地图跳过任何点的反向查找逆映射的四轮驱动区域那落在3x3区域之外。
映射是这样的
(0,0) -> (0,0)
(0,1) -> (1,0)
(0,2) -> (0,1)
(0,3) -> (1,1)
(1,0) -> (2,0)
(1,2) -> (2,1)
(2,0) -> (0,2)
(2,1) -> (1,2)
(3,0) -> (2,2)
Python代码可能是有用的,https://gist.github.com/kannaiah/4eb936b047a987b32555b2642a0979f7
是你能找到这个解决方案? – kanna
没有,对不起...... – Michele
我能够得到https://fgiesen.wordpress.com/2009/12/13/decoding-morton-codes/ – kanna