Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 18. říjen 2012, 16:32:10 Předmět: Obarvení iso-ploch |
|
|
Čau,
řeším problém. Mám obrázek s iso-čárami (typicky třeba teplotní mapa), každá iso-řára má hodnotu. A potřebuju vybarvit prostor mezi nimi. Jak na to nějak "efektivně" ?
Zatím mám funkční řešení, kde ve zkratce:
a) najdu isočáry (to bude vždycky)
b) nakreslím je do obrázku
c) najdu oblasti omezené iso-čárami (pomocí flood / seed-fill) - dostanu seznam pixelů odpovídající oblastem
d) pro každou oblast
di) podle hodnoty na hranách oblasti vyberu odpovídající barvu
dii) vybarvím barvou
Problém je tady s tím, že pokud mám iso-čáry blízko sebe, tak se mi třeba dotknout (vlivem rastru) a pro barvení se mi ta oblast rozpadne na dvě. Isočáry mám vyjádřené pomocí seznamu bodů (float x, y).
Nějaký nápad... popř. co googlit, protože ani moc nevím, pod čím to hledat. _________________ Perry.cz |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 18. říjen 2012, 17:10:03 Předmět: |
|
|
Nemám teď moc času nad tím přemýšlet, ale nemůžeš použít něco ála Halfspace triangle rasterization a provádět rendering po tilech (imho můžeš)? Jen určíš zda všechny pixely jsou pod/nad isoline a dle toho je zabarvíš.
Určitě to bude rychlejší než provádět Flood-fill. _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 18. říjen 2012, 17:30:53 Předmět: |
|
|
No nemam to ale jako trojúhelníkovou síť...a dělat nad tim triangulaci, tak to ze zase pak už nevyplatí.
Navíc test nad/pod by fungoval imho pomalu.. spíš bych musel testovat bod - nekonvexni polygon s dirama
Co mě ale napadlo, že by mohlo možná jít:
a) Seřadit hranice oblastí ve směru hod. ručiček (CW)
b) pro každou hranu určit, zda je oblast, kterou uzavírá vlevo / vpravo
c) Začít od isočar s min. hodnotu
ci) vybarvit nekonvexní polygon (scan-line) určený isočárami - ignorovat oblasti uvnitř
Tím, že barvím od min. hodnot a ignoruju vnitřky, je pak v dalším kroku někde přebarvím.. něco jako malíř, když plácá barvu na plátno a kryje spodní ... Jestli to bude rychlejší nevím, ale mohlo by. _________________ Perry.cz |
|
Návrat nahoru |
|
 |
|
|
Nemůžete odesílat nové téma do tohoto fóra Nemůžete odpovídat na témata v tomto fóru Nemůžete upravovat své příspěvky v tomto fóru Nemůžete mazat své příspěvky v tomto fóru Nemůžete hlasovat v tomto fóru
|
Powered by phpBB © 2001, 2005 phpBB Group
Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna