Zdravím prosím vás mám takový problém, když vybarvuji např. trojúhelník a použiji algoritmus, který se pohne maxilalně jen 2x po ose x a y. A program se mi hned zacyklí.
Tato to sekvence opakuje dokola
Vstupní bod: x 500 y 250
x 501 y 250
x 499 y 250
x 500 y 251
x 500 y 249
x 502 y 250
x 502 y 250
x 500 y 250
x 501 y 251
x 501 y 249
x 500 y 250
Prosím poraďte co mám dělat už mi došli nápady.
public boolean compare(G_Color prvni , G_Color druhy){
return prvni == druhy;
}
public void floodfill(float [][] bod , G_Color barva )
{
int x,y;
x = (int)bod[0][0];
y = (int)bod[1][0];
G_Color hranice = new G_Color(0, 0, 0);
Zasobnik zacatek, konec;
zacatek = null;
konec = null;
Zasobnik p= new Zasobnik (x,y);
zacatek = p;
konec = p;
while (zacatek!=null)
{
if (!compare(getPixel(zacatek.x-1, zacatek.y), barva) && (!compare(getPixel(zacatek.x-1, zacatek.y), hranice)))
{
p = new Zasobnik (zacatek.x-1,zacatek.y);
konec.dalsi=p;
konec=p;
putPixel(zacatek.x-1, zacatek.y, barva);
}
if (!compare(getPixel(zacatek.x+1, zacatek.y), barva) && (!compare(getPixel(zacatek.x+1, zacatek.y), hranice)))
{
p = new Zasobnik (zacatek.x+1,zacatek.y);
konec.dalsi=p;
konec=p;
putPixel(zacatek.x+1, zacatek.y, barva);
}
if (!compare(getPixel(zacatek.x, zacatek.y-1), barva) && (!compare(getPixel(zacatek.x, zacatek.y-1), hranice)))
{
p = new Zasobnik (zacatek.x,zacatek.y-1);
konec.dalsi=p;
konec=p;
putPixel(zacatek.x, zacatek.y-1, barva);
}
if (!compare(getPixel(zacatek.x, zacatek.y+1), barva) && (!compare(getPixel(zacatek.x, zacatek.y+1), hranice)))
{
p = new Zasobnik (zacatek.x,zacatek.y+1);
konec.dalsi=p;
konec=p;
putPixel(zacatek.x, zacatek.y+1, barva);
}
zacatek=zacatek.dalsi;
}
}
public class Zasobnik {
public int x;
public int y;
Zasobnik dalsi;
Zasobnik(int x,int y) {
this.x = x;
this.y = y;
dalsi = null;
}
}