.[ ČeskéHry.cz ].
Obarvení iso-ploch

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 18. říjen 2012, 16:32:10    Předmět: Obarvení iso-ploch Odpovědět s citátem

Č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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 18. říjen 2012, 17:10:03    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 18. říjen 2012, 17:30:53    Předmět: Odpovědět s citátem

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í Smile... Jestli to bude rychlejší nevím, ale mohlo by.
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
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