我目前正在开发泛洪填充代码,以在为计算机图形学类制作的软件渲染器中填充多边形。这是递归下面的代码,它基于geeksforgeeks的算法。
def flood(self, x, y, colorOld, colorNew):
if (x < 0 or x >= self.width or y < 0 or y >= self.height):
print("height/width not in range")
return
if (self.framebuffer[x][y] != colorOld):
print("color is old")
return
print(str(x) + ", " + str(y))
self.point(x, y, colorNew)
self.flood(x+1, y, colorOld, colorNew)
self.flood(x-1, y, colorOld, colorNew)
self.flood(x, y+1, colorOld, colorNew)
self.flood(x, y-1, colorOld, colorNew)
return
def floodFill(self, x, y, colorN):
colorO = self.framebuffer[x][y]
self.flood(x, y, colorO, colorN)
但是,它到达宽度的末端时会卡住,即使到达其中一个标志也不会返回。
如果我需要提供整个渲染器,请告诉我。