Pogledajte određenu poruku
Staro 17. 02. 2008.   #5
bNasty
profesionalac
Professional
 
Datum učlanjenja: 06.10.2006
Lokacija: Big Smoke
Poruke: 281
Hvala: 0
17 "Hvala" u 12 poruka
bNasty is on a distinguished road
Pošaljite poruku preko MSN za bNasty
Default

Na brzinu, sorry ako je totalno konfuzno (i aplikabilno samo za veliki broj linija, za manji broj se ne treba cimati ovoliko)

Linije predstavi prvo kao objekte kojima mozhe da se manipulishe u space-u i koji mogu da se dodaju u kontejnere (naravno).

Uvedi z-order medju njima (ako ti se linije preklapaju u tachki da znash koja ima prioritet).

Uradi space partitioning (recimo quad tree, mada najbolja varijanta ce zavisiti od generalnog layout-a tih linija...).
Ako imash mnogo linija nece ti pomoci da pravish bounding box svake linije. Tu ce ti jako pomoci idiom tipa shadow-objects (gde jedan objekat mozhe da se nalazi u vishe nodova, tj. node u tree-u ima pointere na sadrzhajuce objekte). Mozhesh da razmislish i o deljenju linija po gridu kao o jednom reshenju (pri crtanju linije, koja ima svoj group-ID, isechesh je u vishe "pod-linija" sa istim id-om po ivicama grida ili stabla, tako dobijash fine-grained space partitioning i uvek mozhesh da koristish neki hash-table koji ce ti iz tog ID-a dati skup pod-linija koji pripadaju celoj liniji kako bi mogao da je rekonstruishesh u celosti).

Na klik na canvasu filtrirash linije kroz tree/grid, tako da ti od shume linija ostane odredjeni manji broj za proveru. Svaku liniju proverish za zadatu tachku klika (uz proveru z-ordera). Delegirash on-click na taj objekat, tj.liniju.

EDIT: Da, za proveru koordinata na ekranu morash dozvoliti odredjenu greshku, ekran i piskeli bash ne zadovoljavaju matematichke jednachine bez greshke

Poslednja izmena od bNasty : 17. 02. 2008. u 13:08.
bNasty je offline   Odgovorite uz citat