Tengo un sistema donde puedes hacer clic una vez para colocar un nodo en una escena. Cuando coloca 3 nodos, forma un triángulo. Cuando coloca nodos futuros, crea un nuevo triángulo uniendo ese nodo a los 2 nodos existentes más cercanos.
Esto funciona bien la mayor parte del tiempo, pero es defectuoso cuando se usa cerca de triángulos con ángulos muy agudos, porque uno de los 2 nodos más cercanos a menudo no es uno que deba usarse.
Por ejemplo, vea la imagen a continuación. El triángulo magenta es el primero colocado. Si luego hago clic en la posición marcada como X, lo que obtengo es un nuevo triángulo donde está la superposición azul. Lo que quiero es un nuevo triángulo donde esté la superposición verde. (es decir, simétrico al magenta, en este ejemplo. Aclaración: los triángulos verde y magenta no se superponen; el verde se extiende debajo del azul hasta el nodo más a la izquierda)
¿Cómo puedo determinar qué 2 vértices existentes usar al crear nuevos triángulos para que los triángulos no se superpongan de esta manera?
EDITAR : Buscar el borde más cercano da mejores resultados, pero no los perfectos. Considere esta situación:
La prueba del "borde más cercano" es ambigua y puede devolver AB o AC (ya que el punto más cercano a X para ambos está en A). El resultado deseado sería AC, para formar el triángulo ACX sin bordes superpuestos. ¿Cómo podría asegurar este resultado? (Preferiría no tener que realizar pruebas de superposición de bordes individuales como un desempate si es posible, ya que me preocupa que la prueba de borde más cercana no necesariamente detecte que los 2 son exactamente equidistantes, dados los problemas de precisión de coma flotante).