我正在使用 pyglet/openGL 在 Python 中构建一个基于磁贴的应用程序,其中我需要找到给定单元格的所有相邻单元格。我在笛卡尔网格的一个象限中工作。每个单元格都有一个 x 和 y 值,表示它在网格中的位置( x_coord 和 y_coord )。这些不是像素值,而是网格位置。我正在寻找一种有效的方法来获取相邻的单元格。最多有 8 个可能的相邻单元格,但由于网格的边界,可能只有 3 个。一个简单但可能效率低下的方法的伪代码如下所示:
def get_adjacent_cells( self, cell ):
result = []
x_coord = cell.x_coord
y_coord = cell.y_coord
for c in grid.cells:
if c.x_coord == x_coord and c.y_coord == y_coord: # right
result.append( c )
if c.x_coord == x_coord - 1 and c.y_coord == y_coord + 1: # lower right
result.append( c )
if c.x_coord == x_coord - 1 and c.y_coord == y_coord: # below
result.append( c )
if c.x_coord == x_coord - 1 and c.y_coord == y_coord - 1: lower left
result.append( c )
if c.x_coord == x_coord and c.y_coord == y_coord - 1: right
result.append( c )
// -- similar conditional for remaining cells
这可能工作得很好,尽管此代码可能需要运行每一帧并且在更大的网格中它可能会影响性能。关于更精简和更少 CPU 密集型方法的任何想法?或者,我应该采用这种方法吗?
提前致谢。