Hei,
Voisiko joku selittää, miten tämä wikipedian esiemerkki flood fill-algoritmista toimii?
http://en.wikipedia.org/wiki/File:Recursive_Flood_Fill_4_(aka).gif
Scrpti on tällainen:
sub FloodFill4
{
my ($x, $y) = @_;
if ($im->getPixel ($x, $y) == $colfill)
{
$im->setPixel ($x, $y, $colpen);
WriteImage ();
FloodFill4 ($x, $y 1);
FloodFill4 ($x, $y-1);
FloodFill4 ($x 1, $y);
FloodFill4 ($x-1, $y);
}
}
Miksi täyttö lähtee esimerkissä alaspäin, vaikka ensimmäinen rivi koodissa on x, y 1?
Entä miksi algoritmi päättää jatkaa juuri aloitussolun vasemmasta solusta, kun vasemman alalaidan neliö on väritetty?
Rekursiivinen flood fill?
Miten toimii?
2
928
Vastaukset
- pelkkää päättelyä
1) y 1 on yleensä alaspäin, bittikartat alkavat yleensä vasemmasta yläkulmasta.
2) Koska kun alussa kuljetaan alas, ei päästä muualle kuin vasemmalle. Siitä täytetään alas. Kun vasemmanpuoleinen lohko on täytetty kokonaan, jatketaan ylös (aloituskohdan vasemmanpuoleinen pikseli). Tällöin päästään rekursion juuressa toiseen FloodFill4:ään ja jatketaan ylös. - metodi
kannattaa käyttää scanline-floodfill algoritmia, huomattavan paljon nopeampi
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Kelekkakisat
Mikä vakava onnettomuus sattunut kisoissa. On peruttu koko kisat. Pelastuskopteri näytti käyvän paikalla.2110935- 408207
- 1255245
- 1433646
- 693558
Virkamiehille tarvitaan tuntuvat palkankorotukset
Naistenpäivänä on syytä muistuttaa, että virkamiehen euro on vain 80 senttiä. Palkat tulee saattaa samalle tasolle yksi353514- 333157
- 552519
Olisipa saanut sinuun
Tutustua paremmin. Harmi että aloin lopulta jännittämään kun näytit tunteesi niin voimakkaasti ja lähestyit niin voimaak352011- 281786