Ich habe ein System, in dem Sie einmal klicken können, um einen Knoten in einer Szene zu platzieren. Wenn Sie 3 Knoten platzieren, bildet sich ein Dreieck. Wenn Sie zukünftige Knoten platzieren, wird ein neues Dreieck erstellt, indem dieser Knoten mit den 2 nächstgelegenen vorhandenen Knoten verbunden wird.
Dies funktioniert die meiste Zeit gut, ist jedoch fehlerhaft, wenn es in der Nähe von Dreiecken mit sehr spitzen Winkeln verwendet wird, da einer der beiden nächstgelegenen Knoten häufig nicht verwendet werden sollte.
Siehe zum Beispiel das Bild unten. Das magentafarbene Dreieck ist das erste, das platziert wird. Wenn ich dann auf die mit X gekennzeichnete Position klicke, erhalte ich ein neues Dreieck, in dem sich die blaue Überlagerung befindet. Was ich will, ist ein neues Dreieck, in dem sich die grüne Überlagerung befindet. (dh in diesem Beispiel symmetrisch zum Magenta-Dreieck. Erläuterung: Das grüne und das Magenta-Dreieck überlappen sich nicht - das grüne Dreieck erstreckt sich unter dem blauen zum Knoten ganz links.)
Wie kann ich bestimmen, welche 2 vorhandenen Scheitelpunkte beim Erstellen neuer Dreiecke verwendet werden sollen, damit Dreiecke nicht so überlagert werden?
BEARBEITEN : Die Suche nach der nächsten Kante liefert bessere Ergebnisse, aber keine perfekten. Betrachten Sie diese Situation:
Der Test der nächsten Kante ist mehrdeutig und kann AB oder AC zurückgeben (da der nächstgelegene Punkt zu X für beide bei A liegt). Das gewünschte Ergebnis wäre AC, um das ACX-Dreieck ohne überlappende Kanten zu bilden. Wie könnte ich dieses Ergebnis sicherstellen? (Ich möchte lieber keine einzelnen Kantenüberlappungstests als Verbindungsunterbrecher durchführen, wenn dies möglich ist, da ich befürchte, dass der nächste Kantentest nicht unbedingt erkennt, dass die 2 aufgrund von Gleitkommapräzisionsproblemen genau gleich weit voneinander entfernt sind.)