Краткое введение: у меня есть тело, которое выражается внешней поверхностью, заданной в форме STL (набор треугольных элементов и их направленный наружу вектор нормали). Я пытаюсь определить, находится ли точка, заданная координатами, внутри или снаружи тела.
Проблема: как найти ближайший элемент к заданной точке? Более конкретно, скажем, вы нашли ближайшую вершину к точке, и эта вершина является общей для двух (или более) элементов. Какой "ближайший"? Обратите внимание, что конечный результат определяет, находится ли точка внутри или снаружи тела. Простое нормальное расстояние (скалярное произведение с нормалью) не решает проблему и может привести к неоднозначному результату в зависимости от того, какой из элементов, разделяющих узел, выбран. Использование центроида элемента также проблематично.
Любые предложения, идеи (особенно от людей, которые уже занимались этим вопросом) приветствуются!
РЕДАКТИРОВАТЬ: я сделаю проблему немного сложнее. Скажем, есть открытая поверхность (но она покрывает всю область, так что каждая точка находится на одной из двух сторон поверхности, либо внутри, либо снаружи, в зависимости от направления относительно нормали. На это также нужно ответить, используя тот же подход .
EDIT2: ответ найден!
Надеюсь это поможет!
|dot(direction,triangle_normal)|>0.0
) - person Spektre   schedule 17.01.2018