Как преобразовать участок с триангулированным отверстием в поверхностную сетку? - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть треугольное пятно с вершинами и треугольниками. Теперь, как мне преобразовать это в поверхностную сетку?

Я пытаюсь частично заполнить дыру в моей сетке, используя два разных патча. У меня есть расположение вершин для всех точек на границе (точки с z = 0). Используя их, я триангулировал отверстие, используя следующий код (от https://doc.cgal.org/latest/Polygon_mesh_processing/Polygon_mesh_processing_2triangulate_polyline_example_8cpp-example.html)

    std::vector<PointCGAL> polyline;
Mesh::Property_map<vertex_descriptor, std::string> name;
Mesh::Property_map<vertex_descriptor, PointCGAL> location = 
    mesh1.points();
BOOST_FOREACH(vertex_descriptor vd, mesh1.vertices()) {
    if (location[vd].z() < 0.00001)
    {
        std::cout << "on Boundary" << endl;
        polyline.push_back(PointCGAL(location[vd].x(), 
    location[vd].y(), location[vd].z()));
    }
    std::cout << location[vd] << std::endl;
}

typedef CGAL::Triple<int, int, int> Triangle_int;
std::vector<Triangle_int> patch;
patch.reserve(polyline.size() - 2); // there will be exactly n-2 
    triangles in the patch
CGAL::Polygon_mesh_processing::triangulate_hole_polyline(
    polyline,
    std::back_inserter(patch));

1 Ответ

1 голос
/ 23 апреля 2019

Посмотрите на функцию polygon_soup_to_polygon_mesh ()

...