2011-10-11 7 views
6

sto cercando di rendere i poligoni, ma possono essere resi solo con rettangoli asse-allineati. Quindi, sto cercando un algoritmo che possa riempire fondamentalmente un poligono usando la quantità di rettangoli possibile di minimo. Se aiuta a ridurre la quantità, i rettangoli possono sovrapporsi l'un l'altro.riempire un poligono con minor quantità di rettangoli

ho già implementato this fill algorithm, che basta per lo più. La rovina è che limita i rettangoli per ogni riga di pixel. Alla fine voglio ridurre la quantità di rettangoli il più possibile.

+0

Presumo dalla domanda che il poligono sia pixelato? un poligono vettoriale non può essere riempito con nessun numero finito di rettangoli allineati sugli assi tranne in casi speciali ... – Chris

risposta

1

rappresentazione Pixel del poligono è uguale a poligono rettilineo ed è possibile partizionare abbastanza veloce. Vedi la risposta a questo question.

0

Rimuovere questa restrizione (che ogni rettangolo ha un'altezza di un pixel) aiuta in alcuni casi speciali quando il poligono è composto da rettangoli grandi, ma non del tutto nel caso generale.

ne dite di questo: utilizzare tale algoritmo, ma si estendono ogni rettangolo verso l'alto e verso il basso per quanto è possibile, e quando tutti i rettangoli sono in atto, eliminare quelle ridondanti.

C'è ancora un po 'di spazio per migliorare, in quanto il ordine in cui si eliminano i rettangoli ridondanti potrebbero materia in alcuni casi molto rari, ma onestamente non credo che valga la pena di preoccuparsi per una soluzione pratica .

+0

Quando ci penso, potrei semplicemente trattare le righe come un mucchio di rettangoli e quindi applicare i metodi suggerito in [questa domanda] (http://stackoverflow.com/questions/5919298/algorithm-for-finding-the-fewest-rectangles-to-cover-a-set-of- rectangle). –

Problemi correlati