矩阵线性索引

时间:2011-08-19 16:11:37

标签: matrix indexing linear traversal

我需要以连续方式遍历矩形网格。这是我想要的一个例子,数字意味着序列:

   + 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

2 个答案:

答案 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

我认为应该这样做。这是对标准计算方式的单一修改,在您调用它们时使用“步骤”。您只是根据行更改计算的方式。