тетраэдрическое преобразование сетки

Я ищу алгоритм, который получает трехмерную поверхностную сетку (т.е. состоящую из трехмерных треугольников, которые являются дискретизацией некоторого многообразия) и генерирует тетраэдры внутри объема сетки.

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

Прошу прощения, если это неясно, это лучший способ объяснить это.

Для 2-го случая есть Треугольник. Для 3-го корпуса я ничего не нашел.


person olamundo    schedule 12.08.2012    source источник
comment
Вы хотите позже разбить его на части? Как в симуляторе физики? Если да, то это очень интересно! И, о, я считаю, что форма множественного числа - это тетраэдры (на основе en.wikipedia. org / wiki / Tetrahedron).   -  person Bartek Banachewicz    schedule 12.08.2012
comment
@BartekBanachewicz - Спасибо, поправили   -  person olamundo    schedule 12.08.2012
comment
Я считаю, что чаще всего используются два термина: тетраэдризация и трехмерная триангуляция. Прочтите этот доклад, чтобы получить хороший обзор: archive.org/details/lecture_10309   -  person Eric    schedule 18.08.2012
comment
Довольно интересная проблема. Мне даже трудно придумать исчерпывающий алгоритм грубой силы. Можно ли для каждого треугольника выбрать другую вершину в сетке, чтобы добавить новый тетраэдр (путем проверки всех вершин), который даже не пересекает предыдущий? Я думаю, что в общем случае это не работает даже в 3d без дополнительных вершин.   -  person starmole    schedule 27.09.2012
comment
Исходная сетка выпуклая или произвольная? Могут ли внутренние тетраэдры быть произвольными по размеру, или для них существуют ограничения по углу / размеру / объему?   -  person Mikeb    schedule 27.09.2012
comment
@Mikeb - сетка не выпуклая. Нет никаких ограничений - я думаю, что даже современные алгоритмы могут дать очень мало гарантий, чем те, которые вы упомянули. Но я ищу пакет, а не предлагаемый алгоритм.   -  person olamundo    schedule 29.09.2012


Ответы (3)


pygalmesh (мой проект, основанный на CGAL) может именно это.

pygalmesh-volume-from-surface elephant.vtu out.vtk --cell-size 1.0 --odt

https://github.com/nschloe/pygalmesh/#volume-meshes-from-surface-meshes

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

person Nico Schlömer    schedule 29.07.2019
comment
Я использую маршевые кубы для идентификации объектов. Затем я создаю треугольную сетку. Я вижу из вашей упаковки, что можно рассчитать объем по поверхностной сетке. Я вижу, что ваш файл слона имеет формат ".vtu". Мне нужно преобразовать мою сетку в эту форму? Также очень впечатлен вашим проектом. - person mmont; 27.04.2020
comment
pygalmesh понимает все форматы, многие из которых поддерживает meshio. - person Nico Schlömer; 27.04.2020
comment
Нико, я пытался скачать pygalmesh, но он не видит, где находится Eigen \ Dense .. Вы знаете, как решить эту проблему? - person mmont; 02.05.2020
comment
Шломер, я сделал это. Я использую машину с Windows. Это очень сложно и не работает. Я не знаю, как изменить setup.py для pygalmesh. Моя проблема очень похожа на github.com/nschloe/pygalmesh/issues/64 - person mmont; 02.05.2020

Я нашел GRUMMP, который, кажется, отвечает на все потребности, упомянутые в вопросе, и многое другое ...

person olamundo    schedule 28.09.2012
comment
Удалось ли вам загрузить GRUMMP на компьютер с Windows? - person mmont; 28.04.2020

У меня не было опыта использования GRUMMP, но что касается трехмерной версии треугольника, есть тетген. Если вы знаете треугольные переключатели, они похожи на них. У него также есть довольно приличная документация и оболочка python для него и треугольник.

http://wias-berlin.de/software/tetgen/

http://mathema.tician.de/software/meshpy/

person fatalaccidents    schedule 18.03.2015