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

Find neighbours outside of 2d grid which is reduced into a 1d array

我有一个二维网格,其中宽度和高度始终相同。

[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 / widthj = k % width。 (/是整数除法,%是模数)。

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