Takže po pár hodinách sedenia pri tom som sa dostal k finálnej verzii algoritmu cez nerekurzivnu možnosť za pomoci zásobníka. Posledná vec čo mi zostáva je zistiť ako vypočítam body použitia algoritmu pre každú s plôch krychle.
Mám krychlu (napriklad):
Připojen obrázek.
Nejaký nápad ako by som dostal 7 rôznych bodov odkial použijem vyplňovací algoritmus?
Nerekurzívna verzia vyplnenia:
public void flood(int x, int y)
{
Zasobnik zacatek, konec;
zacatek = null;
konec = null;
Zasobnik p= new Zasobnik (x,y);
zacatek = p;
konec = p;
while (zacatek!=null)
{
if (!graphic.compare(graphic.getPixel(zacatek.x+1, zacatek.y), cervena) && !(graphic.compare(graphic.getPixel(zacatek.x+1, zacatek.y), farba)))
{
p = new Zasobnik (zacatek.x+1,zacatek.y);
konec.dalsi=p;
konec=p;
graphic.putPixel(zacatek.x+1, zacatek.y, cervena);
}
if (!graphic.compare(graphic.getPixel(zacatek.x-1, zacatek.y), cervena) && !(graphic.compare(graphic.getPixel(zacatek.x-1, zacatek.y), farba)))
{
p = new Zasobnik (zacatek.x-1,zacatek.y);
konec.dalsi=p;
konec=p;
graphic.putPixel(zacatek.x-1, zacatek.y, cervena);
}
if (!graphic.compare(graphic.getPixel(zacatek.x, zacatek.y+1), cervena) && !(graphic.compare(graphic.getPixel(zacatek.x, zacatek.y+1), farba)))
{
p = new Zasobnik (zacatek.x,zacatek.y+1);
konec.dalsi=p;
konec=p;
graphic.putPixel(zacatek.x, zacatek.y+1, cervena);
}
if (!graphic.compare(graphic.getPixel(zacatek.x, zacatek.y-1), cervena) && !(graphic.compare(graphic.getPixel(zacatek.x, zacatek.y-1), farba)))
{
p = new Zasobnik (zacatek.x,zacatek.y-1);
konec.dalsi=p;
konec=p;
graphic.putPixel(zacatek.x, zacatek.y-1, cervena);
}
zacatek=zacatek.dalsi;
}
}