Domanda

Sto cercando un algoritmo con il seguente input e output:

Ingresso:Un insieme di poligoni su un piano.Per esempio.P1...Pn e S.(P1...Pn potrebbe essere concavo, S è convesso.)

Produzione:L'area dell'insieme di poligoni in questo piano che è uguale alla differenza di S e all'unione di P1...Pn.

Ho trovato algoritmi per intersecare o unire DUE poligoni.Ma poiché ciascuna di queste operazioni potrebbe produrre diversi poligoni, se lo facessi ingenuamente ne creerei tonnellate.

COSÌ:Come gestire l'intersezione di più poligoni?

Sarebbe ok se tutti i poligoni fossero collegati insieme poiché solo l'area è ciò che cerco.Il mio pensiero era di utilizzare poligoni orientati per simulare i buchi ma poi ho di nuovo il problema di scoprire se ho una "rappresentazione minima" in quanto n potrebbe esplodere.[Capisci di cosa sto parlando?E' abbastanza strano...)

È stato utile?

Soluzione

Potresti mettere insieme tutti i bordi in un Algoritmo della linea di sweep. Potrebbe non essere ottimale (?) Ma almeno otterrai la rappresentazione minima che stai cercando.

Altri suggerimenti

Una soluzione è convertire ogni poligono in un mucchio di triangoli. Una volta che lo fai è abbastanza facile trovare unione/intersezione/differenza tra una serie di aree poiché è possibile svolgere le stesse funzioni banalmente su un triangolo (il risultato su due triangoli può includere fino a 6 triangoli).

L'approccio più semplice sarebbe scomporre i poligoni concavi in ​​poligoni convessi.Quindi intersecare due poligoni convessi è quasi banale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top