Я вижу три различных сценария, которые могут быть применимы здесь:
1.Точка-сетка epsilon-intersection Здесь мы проверяем, лежат ли точки на поверхности сетки.
Для всех точек выполняется проверка расстояния между точками и треугольниками по всем треугольникам сетки и проверка расстоянияменьше, чем выбранный эпсилон.
2.Обнаружение столкновения точка-сетка Здесь мы проверяем, столкнулись ли точки с сеткой.Это предполагает, что точки сместились, и, таким образом, у нас есть отрезок линии от последней позиции до текущей.
Для всех перемещений точек выполните пересечение линии-треугольника со всеми треугольниками сетки.
3.Содержимое Point-Mesh Здесь мы проверяем, находятся ли точки внутри сетки.Это предполагает, что сетка замкнута и ориентируема.Если это не так, у вас совершенно другая проблема.
Для всех точек выберите случайный луч, простирающийся до бесконечности (или достаточно далеко), и рассчитайте количество пересечений этого луча с сеткой.Если это ноль или четное число, точка находится за пределами сетки.В противном случае это внутри.Обратите внимание, что этот алгоритм может не работать в некоторых угловых случаях, например, если точка находится непосредственно на поверхности сетки или луч пересекает сетку на линии вместо точки.
В основном все сценарии кипятвплоть до выполнения проверок расстояния между точками и треугольниками и проверок пересечения линий и треугольников.Я мог бы опубликовать некоторые решения для обеих этих проблем, но я просто скопировал бы результаты поискового запроса, так что ...