Я использую CGAL для создания вогнутой оболочки набора 3D-точек, используя Пример ex_alpha_shapes_3. Далее я хотел бы выяснить, находится ли точечный запрос в пространстве на поверхности, созданной треугольными вогнутыми гранями корпуса (вывод кода ex_alpha_shapes_3) или нет. Техника «точка в многоугольнике» должна быть полезна для этой цели. Буду признателен, если кто-нибудь сможет мне помочь с этой проблемой.
Вы можете использовать разместить функция и в зависимости от симплекса падение точки и выход функции классифицировать симплекса, вы будете непосредственно знать, если вы внутри, снаружи или на границе.
Я не знаю о CGAL, но есть несколько эвристик, которые вы можете использовать, учитывая, что ваш многогранник известен как выпуклый. Вы можете сделать большую часть работы в основном 2D. Вы можете использовать любые оси, но давайте предположим, что мы работаем в плоскости XY и на мгновение игнорируем компонент Z. Поскольку ваша форма является выпуклой, обычно будет только два треугольника, координаты XY которых окружают координаты XY вашей точки. Для любого треугольника вы можете быстро определить, если х [мин] < х [точка] < х [макс] и аналогично для у. Если эти тесты не пройдены, продолжайте. Если им это удастся, потребуется немного больше испытаний, чтобы определить, действительно ли точка находится внутри треугольника. Как только вы нашли 2 приемлемых треугольника, найдите значение Z для каждого треугольника в точке (X, Y). Если точка Z находится между значениями Z для граней, то точка находится внутри твердого тела.