Проверка того, лежит ли тетраэдр внутри многогранника


15

У меня есть тетраэдр и многогранник . ограничен так, что он всегда разделяет все свои вершины с . Я хочу определить, находится ли внутри .п т п т пt ptpt p

Я хотел бы добавить одну деталь к проблеме в случае, если она может внести вклад в решение: - тетраэдр Делоне, а грани p треугольные и сильно Делоне, как по отношению к вершинам p . Тетраэдр - это Делоне, если в окружности его вершин нет другой вершины. Грани сильно Делоне, если на ее поверхности существует окружность, содержащая вершины этой грани, но нет другой вершины на ней или внутри нее.tpp

Эти цифры показывают ту же проблему в пространстве: 2D

Исходный многоугольник p :

введите описание изображения здесь

Триангуляция Делоне вершин p :

введите описание изображения здесь

Результат внутреннего / внешнего теста по треугольникам t (заштрихованные треугольники находятся внутри а остальные снаружи ):p

введите описание изображения здесь

Желаемый результат (обрезка за пределами треугольников) :

введите описание изображения здесь


Моя первоначальная проблема заключается в трехмерном пространстве, поэтому треугольники на приведенных выше рисунках переводятся в тетраэдры, а многоугольник p - в произвольный многогранник p . Я выяснил некоторые формулировки этой проблемы:tpp

Формулировка 1
Единственные части t которые могут быть вне являются его ребра и треугольные грани, но в целом может существовать p, у которого есть ребра всех внешних t на его поверхности, поэтому в качестве альтернативы, эта проблема также может быть сформулирована так: проверить, существует ли для тетраэдра t грань, лежащая вне p ?pp tt p

Формулировка 2 У
меня есть другая возможная точка зрения на эту проблему, но у нее нет формальной идеи:
геометрически, если находится снаружи, он всегда будет прилипать к внешней поверхности p . Так что, если мы можем вычислить контуры (неофициально, внешнюю границу) C V и C V p так , что V = V ttpCVCVp и V t , V p были множествами вершин в t , p соответственно, то CV=VtVpVt,Vpt,p еслиtлежит внутриp. CV=CVp tp

Я бы хотел знать:

  • Как я могу решить Формула 1 или Формула 2 ?
  • Или есть какой-то совершенно иной подход к решению этой проблемы?


tp pt p

p

Исходя из вышеизложенного, моя основная проблема теперь, кажется, такова (пожалуйста, предложите, если это нужно задать как отдельный вопрос):
есть ли численно надежный алгоритм для задачи точки в многоугольнике ?


ptptptp

tptp

1
p

1
невыпуклость имеет странность, что все вершины могут быть внутри многогранника, и все же тетраэдр может быть снаружи (поскольку ребро не обязательно должно лежать внутри целиком). Возможный алгоритм, посмотрим, могут ли ребра (между многогранником и тетраэдром) иметь пересечения => вероятность того, что тетраэдр лежит снаружи, велика
Никос М.

1
Вы видели алгоритм расстояний Гилберта-Джонсона-Керти? Сначала вам нужно будет разложить многоугольник / многогранник на выпуклые формы (как вы заметили, симплициальный комплекс сделает эту работу). Известно, что GJK очень стабильный и очень быстрый.
псевдоним

Ответы:


2

Недавно я нашел одно решение этой проблемы в статье Алекса Якобсона и др . «Прочная внутренняя и внешняя сегментация с использованием обобщенных чисел обмоток», здесь . Это решает проблему определения местоположения, если точка находится внутри (или снаружи) произвольной (с самопересечениями, немногообразием, открытыми поверхностями и т. Д.) Полигональной сетки, используя понятие обобщенного числа обмоток .

tp .


ptpptppttp
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.