PDA

View Full Version : area totale tra gruppi di rettangoli intersecati


omniaforever
12-03-2012, 10:27
Salve ragazzi, vi propongo un nuovo quesito.
Dovrei calcolare l'area totale di un gruppo di rettangoli che si intersecano.
Di questi rettangoli conosco base e altezza (quindi area) e conosco anche l'area di intersezione per ogni coppia di rettangoli.
Nel caso di intersezione tra 2 rettangoli banalmente potrebbe essere calcolata come
area1 + area2 - area intesezione (O SBAGLIO)?.

Però nel mio caso ho spesso intersezioni multiple tra gruppi di rettangoli.
Come posso fare?
Grazie

Ecco un esempio: l'area da calcolare è quella gialla
http://img845.imageshack.us/img845/3631/areaf.jpg

Linguaggio C++

omniaforever
12-03-2012, 16:45
risolto con una maschera

wingman87
12-03-2012, 18:51
Puoi spiegare la soluzione? Mi sembrava un quesito interessante...

omniaforever
13-03-2012, 08:22
ti crei una matrice (esempio una immagine) con una certa risoluzione in modo che racchiuda tutti i rettangoli, dove per ogni cella [i,j] il valore è 1 se è coperta da almeno un rettangolo e 0 se non è coperta.
In sostanza mappi questi rettangoli nella matrice e conti tutti i punti in cui ha il valore è 1.
Guardando banalmente l'immagine di sopra, basta contare pixel per pixel dove il colore è giallo, e così ottieni l'area

gugoXX
14-03-2012, 11:34
E se il problema fosse geometrico e non grafico,
ovvero se venissero date le coordinate reali (con virgola) dei 4 vertici di ciascun rettangolo
come risolveresti?

andrears250
14-03-2012, 11:52
se non li piazzi in un piano cartesiano (come per esempio hai fatto con la soluzione bitmap) viene dura..

perchè ci vogliono anche le coordinate per fare quel tipo di calcolo. no?

andrears250
14-03-2012, 12:00
oppure procedi per logica

inizi a fare l'area della figura formata da due quadrati

SE

una terza figura si intersecava con le altre due andrai a sommare il rimanente della terza figura ottenuto sottraendo l'area di intersezione con ogni singolo rettangolo precedente. se ne interseca uno farai la differenza con quello, se ne interseca due con i due e così via.

andrears250
14-03-2012, 12:02
con le coordinate io invece andrei a valutare se le intersezioni appartengono al piano.