查找二维网格外的邻居,该网格被简化为一维数组
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 / width
、j = k % width
。 (/
是整数除法,%
是模数)。
一旦你得到这两个索引,你就知道相邻单元格的索引,你可以像往常一样对照边界检查它们(我假设你知道怎么做)。
我有一个二维网格,其中宽度和高度始终相同。
[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
。 (/
是整数除法,%
是模数)。
一旦你得到这两个索引,你就知道相邻单元格的索引,你可以像往常一样对照边界检查它们(我假设你知道怎么做)。