Это непростой вопрос, и он зависит от того, какую производительность вы требуете от своего поиска, и сколько памяти вы готовы обменять, чтобы получить эту производительность.
Если это очень редкооперации, или ваше количество треугольников мало, то вы всегда можете перебрать все треугольники.Тестирование на треугольник, содержащий точку, не очень дорого.Вам, вероятно, следует сначала написать код и посмотреть, дает ли он приемлемую производительность.
Если это неприемлемо, вы можете попробовать пройти триангуляцию - по сути, начать с треугольника и затем найтиследующий ближайший к точке, которую вы ищете.Это предполагает, что у вас есть некоторая дополнительная информация о простом списке треугольников, в частности, что вы можете найти треугольники, которые используют данную вершину (или найти треугольник из соседнего треугольника, который приблизительно эквивалентен по сложности).Если вы не рассчитали это, то это почти так же дорого, как поиск точки.
Если это не достаточно быстро, вам нужно настроить какое-то R-Tree ,Это позволяет очень быстро находить треугольники по их расположению, но требует большой предварительной обработки и значительного объема памяти для дерева.
Вы можете обнаружить, что время для вычисления предварительной обработки для каждого из второго и третьего методов больше, чем время для поиска треугольников с помощью исчерпывающего поиска, если вы не делаете это часто.