Если вы хотите, чтобы что-то работало вне коробки, а ваши точки были точно копланарными, тогда вы можете построить Nef_polyhedron и сбросить его обратно в поверхностную сетку. Этот пример без булевой операции в середине будет работать.
Если вы хотите что-то более эффективное или если ваши точки не обязательно точно копланарны, вам нужно выполнить итерации по краям вашей сетки, чтобыопределить избыточные края.Затем вы можете определить связанные компоненты граней, соединенных этими ребрами.Для всех граней в одном и том же связанном компоненте вы должны сначала определить, является ли компонент просто подключенным (то есть топологически диском).Если нет, то вам нужно будет добавить несколько дополнительных ребер, чтобы соединить отверстия с внешней границей этой грани (поэтому итеративный вызов join_face()
не будет работать вообще).Если компонент просто подключен, то вы знаете, что можете удалить все края.Вы можете пройтись по границе этой грани, начав с граничного края компонента и совершив круговое движение вокруг цели, чтобы определить цикл
граничных краев.