2D网格方向迭代

时间:2012-11-05 04:19:43

标签: algorithm grid iteration direction

我正在寻找某种公式,对于从i0的每个7,它会在某个方向上向相邻的单元格返回x和y偏移量。我的想法是,如果我在一个单元网格中,并且我想扫描周围的单元格,我就不必制作if语句的圣诞树(比算术更慢,更慢)。请注意,此扫描包括对角线。我一直在网上寻找类似的东西,但没有运气。

只要每个输入产生不同的输出,就可以按任何顺序输出方向,x和y只能等于1,0或-1,而且没有一个输出是(0, 0)

2 个答案:

答案 0 :(得分:1)

假设x,y是原始坐标,nx,ny将是当前的邻居:

for (int cx = -1; cx <= 1; ++cx)
  for (int cy = -1; cy <= 1; ++cy)
    if (cx != 0 && cy != 0)
    {
      int nx = x + cx;
      int ny = y + cy;

      // do whatever you like
    }

或只使用常量:

int delta[8][2] = {{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}}

答案 1 :(得分:0)

for i in range(3):
    for j in range(3):
        if (i-1) or (j-1):
            print i-1,j-1

-1 -1
-1 0
-1 1
0 -1
0 1
1 -1
1 0
1 1

这有用吗?