Предположим, мы определяем точку как набор из трех чисел с плавающей запятой, а тетраэдр — как набор из четырех точек.
Предположим, у нас есть тетраэдр и точка, мы можем определить, принадлежит ли точка тетраэдру, следуя решениям, описанным в Как проверить, находится ли точка в тетраэдре или нет? Ключевая идея заключается в том, чтобы определить, находится ли точка на внутренних сторонах тетраэдра четыре стороны тетраэдра.
Моя проблема. Учитывая точку и N тетраэдров, где N составляет около 7 миллионов, мне нужно определить, в каком тетраэдре находится точка. Мы позаботимся о производительности повторных тестов с большим количеством баллов.
Дополнительная информация:
Можно просто проверить эти тетраэдры один за другим, используя методы, упомянутые выше. Но это может быть слишком медленно, учитывая мое большое количество тетраэдров.
В постановке задачи есть конкретный момент. Эти тетраэдры получены из задачи МКЭ (метод конечных элементов) для решения задачи медицинской визуализации (они формируют мозг пациентов). Возможно, сам МКЭ не имеет отношения к вопросу, но мы могли бы использовать тот факт, что эти тетраэдры расположены рядом друг с другом и в пространстве, моделируемом этими тетраэдрами, нет «дыр».
Тетраэдры не имеют пересечений, кроме как на соседней границе. Таким образом, этот вопрос должен иметь единственное решение, если только не на границе, и в этом случае ответом на мою проблему может быть любой из пересекающихся тетраэдров.
Определенных порядков, в которых тетраэдры задаются на входе, нет. Нет никаких указаний на то, являются ли формы тетраэдров правильными или нет.
Любая идея по эффективному решению проблемы? Python предпочтительнее в решении этой проблемы.
Спасибо!