Пусть cx
и cy
- центр х и центр y, а r
- радиус.
r2 = r * r;
for each dy = 0 ... r
dx = 0
while (dx*dx + dy*dy <= r2)
within(cx+dx, cy+dy)
within(cx-dx, cy+dy)
within(cx+dx, cy-dy)
within(cx-dx, cy-dy)
dx++
Оптимизация будет заключаться не в том, чтобы сбрасывать dx
в 0 на каждой итерации, а сразу в более близкое значение.