Ho un sistema in cui è possibile fare clic una volta per posizionare un nodo in una scena. Quando si posizionano 3 nodi, forma un triangolo. Quando si posizionano nodi futuri, viene creato un nuovo triangolo unendo quel nodo ai 2 nodi esistenti più vicini.
Funziona bene per la maggior parte del tempo ma è imperfetto se usato vicino a triangoli con angoli molto acuti, perché uno dei 2 nodi più vicini spesso non è uno che dovrebbe essere usato.
Ad esempio, vedi l'immagine qui sotto. Il triangolo magenta è il primo posto. Se poi faccio clic sulla posizione contrassegnata con X, quello che ottengo è un nuovo triangolo in cui si trova la sovrapposizione blu. Quello che voglio è un nuovo triangolo in cui si trova la sovrapposizione verde. (es. simmetrico a quello magenta, in questo esempio. Chiarimento: i triangoli verde e magenta non si sovrappongono - quello verde si estende sotto quello blu fino al nodo più a sinistra)
Come posso determinare quali 2 vertici esistenti usare quando si creano nuovi triangoli in modo che i triangoli non vengano sovrapposti in questo modo?
EDIT : la ricerca del bordo più vicino offre risultati migliori , ma non perfetti. Considera questa situazione:
Il test del "bordo più vicino" è ambiguo e può restituire AB o AC (poiché il punto più vicino a X per entrambi è in A). Il risultato desiderato sarebbe AC, per formare il triangolo ACX senza bordi sovrapposti. Come posso garantire questo risultato? (Preferirei non dover eseguire test di sovrapposizione dei singoli bordi come se fosse un pareggio, se possibile perché sono preoccupato che il test dei bordi più vicino non rilevi necessariamente che i 2 siano esattamente equidistanti, dati i problemi di precisione in virgola mobile.)