Помощь в алгоритме закраски фигуры

Суть задачи попиксельно нарисовать закрашенные фигуры(В данном случае круг)
Для отрисовки круга использую алгоритм Брезехейма.
Столкнулся с проблемой в самой заливке. Когда фигуру пересекает линия того же цвета, что и фигура. Фигура дальше не закрашивается.

private void fill(int x, int y, int r, int d, int v){
    if(pm.getRGB(x,y) != c.getRGB()){
        pd.drawPixel(x,y, c);
        fill(x + 1, y,r,d + 1, v);
        fill(x - 1, y,r,d -1,v);
        fill(x, y + 1,r,d,v + 1);
        fill(x, y - 1,r,d,v-1);
    }
}

pm.getRGB(x,y) - RGB текущего пикселя
c.getRGB() - RGB фигуры
Также я пытался поставить в условии, что если пиксель внутри фигуры то рисуй его, о там возникала проблема,что рисовались пиксели которые уже нарисованы и получался бесконечный цикл.

Буду рад если вы поможете мне с мои алгоритмом или расскажете о новом! Прикладываю картинку с проблемой


Ответы (1 шт):

Автор решения: MBo

Раз вы используете алгоритм Брезенхема, то на каждом шаге получаете координаты очередной точки (cx + x, cy + y) и нескольких симметричных, в частности, (cx - x, cy + y).

Вот в этот момент и закрашивайте горизонтальную линию. между данными точками.

→ Ссылка