我正在寻找某种公式,对于从i
到0
的每个7
,它会在某个方向上向相邻的单元格返回x和y偏移量。我的想法是,如果我在一个单元网格中,并且我想扫描周围的单元格,我就不必制作if
语句的圣诞树(比算术更慢,更慢)。请注意,此扫描包括对角线。我一直在网上寻找类似的东西,但没有运气。
只要每个输入产生不同的输出,就可以按任何顺序输出方向,x和y只能等于1,0或-1,而且没有一个输出是(0, 0)
。
答案 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
这有用吗?