J'ai un système où vous pouvez cliquer une fois pour placer un nœud dans une scène. Lorsque vous placez 3 nœuds, il forme un triangle. Lorsque vous placez des nœuds futurs, il crée un nouveau triangle en joignant ce nœud aux 2 nœuds existants les plus proches.
Cela fonctionne très bien la plupart du temps mais est défectueux lorsqu'il est utilisé près de triangles avec des angles très aigus, car l'un des 2 nœuds les plus proches n'est souvent pas celui qui devrait être utilisé.
Par exemple, voir l'image ci-dessous. Le triangle magenta est le premier placé. Si je clique ensuite à la position marquée X, ce que j'obtiens est un nouveau triangle où se trouve la superposition bleue. Ce que je veux, c'est un nouveau triangle où se trouve la superposition verte. (c'est-à-dire symétriques au magenta, dans cet exemple. Clarification: les triangles vert et magenta ne se chevauchent pas - le vert s'étend sous le bleu jusqu'au nœud le plus à gauche)
Comment puis-je déterminer les 2 sommets existants à utiliser lors de la création de nouveaux triangles afin que les triangles ne soient pas superposés comme ceci?
EDIT : La recherche du bord le plus proche donne de meilleurs résultats, mais pas parfaits. Considérez cette situation:
Le test du «bord le plus proche» est ambigu et peut renvoyer AB ou AC (car le point le plus proche de X pour les deux est en A). Le résultat souhaité serait AC, pour former le triangle ACX sans chevauchement d'arêtes. Comment pourrais-je garantir ce résultat? (Je préfère ne pas avoir à effectuer des tests de chevauchement de bords individuels comme briseur d'égalité si possible car je crains que le test de bord le plus proche ne repère pas nécessairement les 2 sont exactement équidistants, étant donné les problèmes de précision en virgule flottante.)