【发布时间】:2019-07-21 01:12:04
【问题描述】:
我无法创建一种可以在二维像素数组中创建 FILLED IN 圆的方法。到目前为止,我创建的 Image 类可以创建一个二维像素数组,更改单个像素值等。到目前为止,我能够完成的是使用 Bresenham 的圆算法创建一个围绕任何给定点的任何半径的空心圆在数组中。但是,我不知道如何使这个圆圈填满。
我愿意接受任何解决方案!我尝试过创建“洪水填充”方法,但遇到了各种递归错误。我也尝试过多次使用递减半径调用 circleBres 方法,但这也不起作用。限于篇幅,假设 writePixel 方法有效。
class Image:
def drawCircle(self, centerX, centerY, x, y):
self.writePixel(centerX + x, centerY + y, 50.0)
self.writePixel(centerX - x, centerY + y, 50.0)
self.writePixel(centerX + x, centerY - y, 50.0)
self.writePixel(centerX - x, centerY - y, 50.0)
self.writePixel(centerX + y, centerY + x, 50.0)
self.writePixel(centerX - y, centerY + x, 50.0)
self.writePixel(centerX + y, centerY - x, 50.0)
self.writePixel(centerX - y, centerY - x, 50.0)
def circleBres(self, xc, yc, r):
x = 0
y = r
d = 3 - (2*r)
self.drawCircle(xc, yc, x, y)
while(y>=x):
x+=1
if(d>0):
y-=1
d = d+4*(x-y)+10
else:
d = d + 4 * x + 6
self.drawCircle(xc, yc, x, y)
time.sleep(.06)
obj = Image(50, 50, 51.0)
obj.circleBres(35, 35, 10)
Image构造函数的第三个参数是所有像素在创建时分配的值(51.0),writePixel方法的第三个参数是像素被更改为的值(50.0)。
非常感谢任何帮助。谢谢!
【问题讨论】:
标签: python python-3.x geometry