我很难创建一个方法,可以创建一个二维像素数组填充圆。到目前为止,我创建的图像类可以创建一个二维像素数组,更改单个像素值,等等。到目前为止,我能够完成的是使用Bresenham的圆算法在数组中的任意给定点周围创建一个任意半径的空心圆。但是,我想不出如何填写这个圆。你知道吗
我愿意接受任何解决办法!我尝试过创建一个“flood-fill”方法,但是遇到了各种递归错误。我也尝试过多次使用递减半径调用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)
图像构造器的第三个参数是创建时分配给所有像素的值(51.0),writePixel方法的第三个参数是将像素更改为的值(50.0)。你知道吗
非常感谢您的帮助。谢谢!你知道吗
下面是我如何处理这样一个问题的例子:
假设您有一个正确的圆轮廓,只需遍历行并填充圆边缘之间的所有像素。你知道吗
当你写作的时候
你画一些扫描线最左边和最右边的像素。你知道吗
要填充它,只需做
for
循环,而不是这8行:相关问题 更多 >
编程相关推荐