


Программирование
+2Алгоритм Брезенхема для рисования ЗАПОЛНЕННОЙ окружности на python
12345678910111213141516171819202122232425262728293031
def circle(coords, r, type):
global n
x = coords[0]
y = coords[1]
disp_x = x
disp_y = y
x = 0
y = r
delta = (1-2*r)
error = 0
while y >= 0:
draw_pixel([disp_x + x, disp_y + y])
draw_pixel([disp_x + x, disp_y - y])
draw_pixel([disp_x - x, disp_y + y])
draw_pixel([disp_x - x, disp_y - y])
error = 2 * (delta + y) - 1
if ((delta < 0) and (error <=0)):
x+=1
delta = delta + (2*x+1)
continue
error = 2 * (delta - x) - 1
if ((delta > 0) and (error > 0)):
y -= 1
delta = delta + (1 - 2 * y)
continue
x += 1
delta = delta + (2 * (x - y))
y -= 1
if type == "f":
вот что сюда добавить чтобы круг стал заполненным?
По дате
По рейтингу
draw_pixel([disp_x + x, disp_y + y]) // Здесь рисуется четвертинка круга, скорее всего в первой четверти (система координат может быть разной, но не суть).
Если хочется залить попиксельно, то здесь вместо каждой из первых четырёх строчек должен быть цикл, скажем по горизонтальным строкам, каждая начинается от disp_x (x координата центра окружности) и заканчивается в disp_x + x (посчитанный край окружности)
Кроме того, есть группа алгоритмов заливки flood fill, можно реализовать какой-нибудь отдельно и вызвать для центра окружности
https://en.wikipedia.org/wiki/Flood_fill
Больше по теме