Come scoprire se una tessera è coperta da un poligono?

2

Dato un poligono (intersecante), mi piacerebbe scoprire quali tessere sono coperte dal poligono.

Esempio :

Dettagli:

  • Letesseresonoquadrate,1unitàlarga/alta
  • Lagrigliainiziain(0,0)
  • Gliangolidelpoligonopossonoaverecoordinateinvirgolamobile(ades.3.433,5.234)
  • Ingenerale,unlatodelpoligonopotrebbeesserelungo1000-10000riquadri

Hoprovatoaripeteretutteletessereecontrollaresesononelpoligono,tuttavia,datochedevoripeterepiùdi10000²dipiastrelle,civuoleunpo'ditempo.

Sonointeressatoaunasoluzionechemiconsentadirispondererapidamente"Tegola (x, y) coperta dal poligono?" senza ricalcolare tutto da zero per ogni domanda.

Qualunque soluzione / approccio / pseudo-codice / suggerimento che mi porta a una soluzione corretta sarà accettata.

    
posta Ted 15.05.2014 - 08:33
fonte

1 risposta

2

Sembra che tu voglia eseguire la rasterizzazione del poligono, in cui i tuoi "pixel" sono i tuoi elementi di griglia.

Un approccio che vorrei provare (poiché è probabile che troverai algoritmi pronti all'uso per farlo), è di utilizzare un rasterizzatore in memoria (ad esempio Cairo), regolando il filtro (e ovviamente le coordinate del tuo poligoni in modo che siano espressi in unità di griglia).

In alternativa puoi eseguire il rollover utilizzando gli algoritmi esistenti. Ad esempio:

Per il passaggio 2, se vuoi coprire tutti i pixel, vedi questa domanda SO .

    
risposta data 15.05.2014 - 11:24
fonte

Leggi altre domande sui tag