Matrix 矩阵线性索引

Matrix 矩阵线性索引,matrix,indexing,traversal,Matrix,Indexing,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

我需要以连续方式遍历矩形网格。下面是我想要的示例,数字表示顺序:

   + 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

所以你需要先增加“x”分量,然后再向右减少,这样你就得到了一种蛇的行为?您将需要一个if语句(或某种模魔术)。让我来试试这个魔术:

y := floor(i/columnCount) x = (y mod 2)*(i - y*columCount) + ((y+1) mod 2)*((columnCount -1) - (i - y*columnCount)) y:=楼层(i/列数) x=(y模2)*(i-y*列数)+(y+1)模2)*(列数-1)-(i-y*列数))
我认为应该这样做。这是对标准计算方法的一次修改,你称之为“步骤”。您只是在更改基于行的计算方式。

步骤是什么意思?你能举一个例子说明每一种预期的和错误的行为吗?矩阵存储在主列或主行中的顺序是什么?您似乎表示它是按行主顺序排列的,但正在使用列主索引方案……您可能还对这幅著名漫画中使用的空格填充曲线感兴趣(请参见图片下的说明)@talonmies抱歉,我不知道您的意思,但可能是我混合了索引。结果是多数人没有matter@andrewcooke哇,这真的很有用,这将创造出很好的效果,这正是我想要的,而且它简单而优雅。
y = index / width
if( y % 2 == 0 )
   x = index % width
else
   x = width - index % width - 1