我需要以连续方式遍历矩形网格。这是我想要的一个例子,数字意味着序列:
+ x
y 0 1 2
5 4 3
6 7 8
在每一步我都知道矩阵中的索引。有没有办法计算坐标? [x + y * width]
的逆映射没有帮助,因为它创建了“步骤”或“跳转”。有没有解决方案?
以下是上述“步骤”的解释:
+ x
y 0 1 2
3 4 5 //at this moment the X coordinate changes by 3, thus create step
6 7 8
答案 0 :(得分:1)
所以你需要首先增加“x”组件然后向右减小 - 这样你就会得到一种蛇行为?你需要一个if语句(或某种模数 - 魔术)。让我尝试一下魔术:
y := floor(i/columnCount) x = (y mod 2)*(i - y*columCount) + ((y+1) mod 2)*((columnCount -1) - (i - y*columnCount))
答案 1 :(得分:1)
y = index / width
if( y % 2 == 0 )
x = index % width
else
x = width - index % width - 1
我认为应该这样做。这是对标准计算方式的单一修改,在您调用它们时使用“步骤”。您只是根据行更改计算的方式。