IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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.

Aktivity
Avatar
Vojta
Člen
Avatar
Vojta:16.3.2019 23:09

Rád bych se dozvěděl, jak mohu z bitmapy, ve které jsou uloženy rgb hodnoty pixelů (černou barvou jsou ohraničena teritoria), dostat aproximaci v podobě polygonů (list/ vektor bodů). Nepotřebuji žádný konkrétní source code, spíše nějaký algoritmus.
V příloze posílám příklad, jak by mohla vypadat taková mapa (mimochodem proč nepodporujete bmp soubory jako přílohu?). Černá barva tedy představuje hranice mých polygonů.

Zkusil jsem: Nevím úplně, jak si s tím poradit. Zkusil jsem něco vygooglit, ale moc jsem toho nenašel.

Chci docílit: Vytvářím digitální podobu deskové hry risk a rád bych, aby hrací deska (mapa světa) byla v očích hry reprezentována jako list/ vektor bodů. Problém nastává v tom, že moje mapa světa, kterou chci použít, je ve formátu bitmapy. Další způsob, jak docílit toho, co chci, by bylo na hulváta prostě ty souřadnice bodů vypsat, ale kdybych později chtěl takto překonvertovat víc map, tak mi to přijde jako blbost.

 
Odpovědět
16.3.2019 23:09
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Vojta
DarkCoder:17.3.2019 1:02

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.).

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
17.3.2019 1:02
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Kenvil
Člen
Avatar
Odpovídá na Vojta
Kenvil:17.3.2019 4:17

Ahoj, zkus mrknout na toto
Read_pixel_va­lue_in_BMP

 
Nahoru Odpovědět
17.3.2019 4:17
Avatar
Vojta
Člen
Avatar
Odpovídá na DarkCoder
Vojta:17.3.2019 9:31

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í.

 
Nahoru Odpovědět
17.3.2019 9:31
Avatar
Borek
Člen
Avatar
Odpovídá na Vojta
Borek:29.7.2019 8:23

Zkusil jsi vyhledat v Googlu "hranový detektor" ?

 
Nahoru Odpovědět
29.7.2019 8:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.