Ecco una soluzione semplice ...
cominciare con tre punti qualsiasi in modo da formare un triangolo. Aggiungi ogni punto aggiuntivo al poligono con la seguente operazione:
Dividi i bordi in due percorsi continui, dove in un percorso la linea di ciascun bordo separa il punto da aggiungere dal resto del poligono (chiamiamolo il "percorso di separazione") e nell'altro percorso, la linea di ciascun bordo ha il punto sullo stesso lato del poligono.
(Nota: finchè la forma rimane convessa, quale deve, questi due percorsi sarà continuo e formare l'intera forma)
Se il percorso di separazione ha bordi, il punto è all'interno del poligono e dovrebbe essere ignorato, altrimenti rimuovere il percorso di separazione dal poligono. Sostituirlo con due segmenti, collegando ciascun punto finale del percorso di separazione al nuovo punto.
Ta-da! :)
fonte
2009-05-06 10:27:52
ciao, ho bisogno di implementare stessa funzionalità nella mia applicazione. per favore condividi l'algoritmo con me? –
Ho usato QuickHull. Riferimento qui: https://en.wikipedia.org/wiki/Quickhull –