Сглаживание сгенерированного Делоне с использованием CGAL

У меня проблема с низким качеством тетраэдров в сгенерированной меше.

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

Поскольку у меня есть Mesh в форме «облака точек», у меня нет Mesh_Domain_3. Все примеры, которые я нашел для оптимизации сетки, использовали make_mesh_3 вместе с Mesh_Domain.

Есть ли способ применить сглаживание к сгенерированной сетке Делоне, используя CGAL, или настроить CGAL::Delaunay_triangulation_3 для оптимизации? Однако есть одно ограничение: некоторые точки в сетках нельзя перемещать / стирать из облака, а некоторые — нет.

Типы, которые я использую:

 typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef CGAL::Triangulation_vertex_base_with_info_3<int, Kernel> Vb;
typedef CGAL::Triangulation_data_structure_3<Vb> Tds;
typedef CGAL::Delaunay_triangulation_3<Kernel, Tds> Delaunay;

Поколение код

Delaunay triangulation(nodes.begin(), nodes.end());
//woudld be best to apply mesh smoothing here.
for(auto fit = triangulation.finite_cells_begin(); fit != triangulation.finite_cells_end(); ++fit)
{
auto x1 = fit->vertex(0)->info();
auto x2 = fit->vertex(1)->info();
auto x3 = fit->vertex(2)->info();
auto x4 = fit->vertex(3)->info();

tetras.push_back(new Tetrahedron(nodesToTriangulate[x1],nodesToTriangulate[x2],nodesToTriangulate[x3],nodesToTriangulate[x4]));
}

0

Решение

Вы можете вычислить центр тяжести для каждого тетраэдона и провести ретриангуляцию с помощью взвешенной триангуляции.

0

Другие решения

Я решил использовать ограниченное сглаживание по Лапласу + дисперсию топологического сглаживания, чтобы улучшить качество тетраэдра в сетке. Я должен был реализовать это сглаживание самостоятельно, поскольку они недоступны в CGAL.

Это значительно улучшило качество сетки. Под качеством я подразумеваю минимальный телесный угол тетраэдров.

0

По вопросам рекламы [email protected]