Arrays 查找二维网格外的邻居,该网格被简化为一维数组

Arrays 查找二维网格外的邻居,该网格被简化为一维数组,arrays,2d,dimension-reduction,Arrays,2d,Dimension Reduction,我有一个二维网格,其中宽度和高度总是相同的 [0][1][2] [3][4][5] [6][7][8] 我将它的数据源简化为一维数组 [0][1][2][3][4][5][6][7][8] 元素的访问是可行的,但这里有一个棘手的部分:如何知道,当仍在处理一维数组时,单元的邻居是否在网格之外 例如,[5]的右上邻域不在网格中,但使用计算的偏移索引,我将得到[3] 有这方面经验的人吗?假设你知道(i)单元格的索引和(2)网格的尺寸(正确吗?),并且它在一维数组中的索引是k,在二维数组中的索引是i

我有一个二维网格,其中宽度和高度总是相同的

[0][1][2]
[3][4][5]
[6][7][8]
我将它的数据源简化为一维数组

[0][1][2][3][4][5][6][7][8]
元素的访问是可行的,但这里有一个棘手的部分:如何知道,当仍在处理一维数组时,单元的邻居是否在网格之外

例如,[5]的右上邻域不在网格中,但使用计算的偏移索引,我将得到[3]

有这方面经验的人吗?

假设你知道(i)单元格的索引和(2)网格的尺寸(正确吗?),并且它在一维数组中的索引是
k
,在二维数组中的索引是
i,j

然后
k=i*width+j
。因此,
i=k/width
j=k%width
。(
/
是整数除法,
%
是模数)

一旦你得到这两个索引,你就知道了相邻单元的索引,你就可以正常地对照边界检查它们(我想你知道怎么做)。

好吧,假设你知道(I)单元的索引和(2)网格的尺寸(对吗?),并且它在1D数组中的索引是
k
,在2D数组中
i,j

然后
k=i*width+j
。因此,
i=k/width
j=k%width
。(
/
是整数除法,
%
是模数)


一旦你得到这两个索引,你就知道相邻单元的索引,你可以正常地对照边界检查它们(我想你知道怎么做)。

谢谢,我花了一点时间来正确地实现它,但它工作得很好!谢谢,我花了一点时间来正确实施它,但它工作得很好!