Diskuze: aproximace bitové mapy pixelů polygony
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Představ si klasické dětské omalovánky. Bílý podklad, na něm mapa světa, na které jsou černou barvou vyznačeny jednotlivá teritoria. Každá souřadnice bitmapy má tedy nějakou barvu, v tuto chvíli pouze bílou nebo černou. Pokud bude kliknuto na souřadnici, jejíž barva je černá, nic neděláš. Pokud bude bílá (to je to co potřebuješ), tak musíš zjistit všechny sousední souřadnice, sousední sousedních, ve kterých je ta samá barva. Tedy dokud nenarazíš na černou, představující ohraničení teritoria. Zjednodušeně potřebuješ vytvořit algoritmus výplně, jako bys to nějakou barvou vymalovával - klasická vlna. Všechny tyto souřadnice si pak přiznačíš nějakou barvou nebo hodnotou. Tím získáš daný polygon. Toto můžeš udělat kdykoli za běhu programu. Můžeš si to ale také předgenerovat. Uchováváš si tak souřadnice bodů pro tu danou hodnotu. Hodnoty každého teritoria si můžeš vygenerovat. Začneš levým horním rohem, končíš pravým spodním. Aplikuješ algoritmus výplně postupně pro každou neohodnocenou souřadnici a celá teritoria si ohodnocuješ přirozenými čísly. Nulová hodnota znamená okraj teritoria, který je pro tebe nezajímavý, nenulová konkrétní teritorium.
Tedy získáš souřadnici kliku do bitmapy, ze souřadnice vytáhneš hodnotu, aplikuješ algoritmus výplně nebo si vytáhneš ze souboru, paměti, seznam všech souřadnic pro danou hodnotu na které chceš aplikovat nějaký efekt (změnu barvy, potažení texturou, apod.).
Díky za radu, nejdřív mě něco takového taky napadlo, ale nemyslel jsem si, že by to stačilo, ale jak teď nad tím přemýšlím, tak je to vlastně úplně ideální řešení.
Zobrazeno 5 zpráv z 5.