У меня есть система, где вы можете щелкнуть один раз, чтобы разместить узел на сцене. Когда вы размещаете 3 узла, он образует треугольник. Когда вы размещаете какие-либо будущие узлы, он создает новый треугольник, соединяя этот узел с двумя ближайшими существующими узлами.
Это прекрасно работает в большинстве случаев, но имеет недостатки при использовании вблизи треугольников с очень острыми углами, потому что один из двух ближайших узлов часто не тот, который следует использовать.
Например, см. Изображение ниже. Пурпурный треугольник - первый. Если я затем щелкну в позиции, помеченной X, то получу новый треугольник с наложенным синим цветом. То, что я хочу, это новый треугольник, где зеленый оверлей. (т.е. симметрично пурпурному, в этом примере. Уточнение: зеленый и пурпурный треугольники не перекрываются - зеленый простирается под синим до самого левого узла)
Как я могу определить, какие 2 существующие вершины использовать при создании новых треугольников, чтобы треугольники не накладывались таким образом?
РЕДАКТИРОВАТЬ : Поиск ближайшего края дает лучшие результаты, но не идеальные. Рассмотрим эту ситуацию:
Тест «ближайший край» неоднозначен и может возвращать AB или AC (поскольку ближайшая точка к X для обоих находится в точке A). Желаемый результат будет AC, чтобы сформировать треугольник ACX без наложения ребер. Как я мог обеспечить этот результат? (Я бы предпочел не выполнять отдельные тесты перекрытия ребер в качестве прерывателя связей, если это возможно, поскольку я обеспокоен тем, что тест ближайшего ребра не обязательно определит, что 2 точно равноудалены, учитывая проблемы точности с плавающей запятой.)