[ Predrag Supurovic @ 08.07.2012. 10:01 ] @
Treba da rešim jedan problem pa bi mi svako iskustvo pomoglo.

Imam definasnu površinu slike kao zatvorenu krivu liniju definisano nizom tačaka (kooordinate u pikselima) koje predstavljaju uglove na toj liniji. Povrsina je definisama samo jednom krivom linijom, to jest, ne mogu postojati "ostrva" (rupe) na toj povrsini.

Potrebno mi je da pročitam sve piksele koji se nalaze na datoj površini. Za problem koji resavam nije bitno šta čitam već da na neki način dodjem do koordinata svih piksela koji čine datu površinu.

Za moje potrebe odgovarala bi mi dva pristupa:

1. da odredim maksimalne i minimalne koordinate piksela na datoj površini. Zatim da da u petlji vrtim sve moguce kombinacije i da za svake tako izracunate koordinate piskela proverim da li se piksel zaista nalazi na zadatoj povrsini pa da ga obradim, ili

2. da definiciju povrsine prevedem u drugi oblik, tako sto cu izracunati niz pravougaonika (odredjenih sa dva para koordinata) a koji bi svi zajedno takodje definisali zadatu povrsinu. Ovaj drugi nacin mi vise odgovara je rmogu brzo da obradim odjednom sve piksele koji se nalaze na pravougaonoj povrsini.

Da li je neko resavao ovakav problem pa da mi da kakav savet ili primer algoritma?
[ craft @ 08.07.2012. 11:47 ] @
Nemam neko konkretno iskustvo s tim ali krenuo bih od ovog algoritma. Koliko vidim dosta biblioteka ga koristi za testiranje pripadnosti tacke poligonu.
[ djoka_l @ 08.07.2012. 14:04 ] @
http://en.wikipedia.org/wiki/Flood_fill
[ tosa @ 09.07.2012. 02:06 ] @
Kovenksna ili nekonveksna kriva? Mozes da ides u petlji vertikalno i da seces liniju sa krivom, nadjes tacke preseka sa krivom i imas start/end koordinate za svaki scanline.
Ako nije konveksna kriva, dobices na nekim mestima vise od jednog para tacaka i to je sve.
[ Predrag Supurovic @ 12.07.2012. 10:57 ] @
Kriva sa kojom radim može da bude potpuno proizvoljnog oblika.

Našao sam i ja jedan koristan članak: http://sidvind.com/wiki/Point-in-polygon:_Jordan_Curve_Theorem

Ideja je da se od tačke koja se proverava povuce prava i da se broji koliko puta prava preseca duzi koje čine zatvorenu krivu liniju. Ako je taj broj neparan, tačka je unutar krive.

[ Nedeljko @ 13.07.2012. 09:47 ] @
Pa, to ti je craft i rekao (odnosno dao link na algoritam). Drugo, to nije kriva nego poligon. Kada znaš terminologiju, mnogo je lakše izguglati nešto.
[ Shadowed @ 13.07.2012. 10:39 ] @
Da li je linija koja obuhvata povrsinu takodje definisana pikselima? Tj. da li, ako prolazis kroz sve piksele, neki pripadaju granici?