Eu tenho um sistema onde você pode clicar uma vez para colocar um nó em uma cena. Quando você coloca 3 nós, ele forma um triângulo. Quando você coloca quaisquer nós futuros, ele cria um novo triângulo unindo esse nó aos 2 nós existentes mais próximos.
Isso funciona bem na maioria das vezes, mas apresenta falhas quando usado perto de triângulos com ângulos muito agudos, porque um dos 2 nós mais próximos geralmente não é aquele que deve ser usado.
Por exemplo, veja a imagem abaixo. O triângulo magenta é o primeiro colocado. Se eu clicar na posição marcada X, o que recebo é um novo triângulo onde está a sobreposição azul. O que eu quero é um novo triângulo onde está a sobreposição verde. (isto é, simétrico ao magenta, neste exemplo. Esclarecimento: Os triângulos verde e magenta não se sobrepõem - o verde se estende sob o azul ao nó mais à esquerda)
Como posso determinar quais 2 vértices existentes usar ao criar novos triângulos para que os triângulos não sejam sobrepostos dessa maneira?
EDIT : A busca pela borda mais próxima fornece melhores resultados, mas não os perfeitos. Considere esta situação:
O teste da 'aresta mais próxima' é ambíguo e pode retornar AB ou AC (como o ponto mais próximo de X para ambos é em A). O resultado desejado seria AC, para formar o triângulo ACX, sem arestas sobrepostas. Como eu poderia garantir esse resultado? (Prefiro não ter que executar testes individuais de sobreposição de arestas como desempatador, se possível, pois estou preocupado que o teste de aresta mais próximo não necessariamente identifique os 2 como exatamente equidistantes, dados problemas de precisão de ponto flutuante.)