Flood fill (vyplnění barvou) – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Flood fill (vyplnění barvou) – Java – Fórum – Programujte.comFlood fill (vyplnění barvou) – Java – Fórum – Programujte.com

 

Tom
~ Anonymní uživatel
434 příspěvků
2. 1. 2016   #1
-
0
-

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;
	}
        
}
Nahlásit jako SPAM
IP: 91.221.212.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

Podobná vlákna

FILL — založil SmokinMon

Seed fill — založil DT

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý