Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Create Surface_Mesh from Alpha_Shape

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Create Surface_Mesh from Alpha_Shape


Chronological Thread 
  • From: nolvis <>
  • To:
  • Subject: Re: [cgal-discuss] Create Surface_Mesh from Alpha_Shape
  • Date: Tue, 6 Mar 2018 09:51:07 -0700 (MST)
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=SoftFail ; spf=Pass
  • Ironport-phdr: 9a23:xFFt9ReF2eIKswuNUxDWUziAlGMj4u6mDksu8pMizoh2WeGdxcu6Yh7h7PlgxGXEQZ/co6odzbaO6Oa4ASQp2tWoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7Ovr6GpLIj8Swyuu+54Dfbx9HiTahb75+Ngm6oRnMvcQKnIVuLbo8xAHUqXVSYeRWwm1oJVOXnxni48q74YBu/SdNtf8/7sBMSar1cbg2QrxeFzQmLns65Nb3uhnZTAuA/WUTX2MLmRdVGQfF7RX6XpDssivms+d2xSeXMdHqQb0yRD+v6bpgRh31hycdLzM3/mHZhNJzgq1ZrhKvuhNwzJLbboyOKPpzfL/Rcc8GSWZdQMpcUTFKDIOmb4sICuoMJeBYr475p1sQrBu+HhSnCeTuyz9Im3/2x6460/klEQHHxwwtBN0OsHHOo9X0MKceS/y6zK7NzTjaaf5dxDnz6I/Nch87oPGMW6p9cczLxkY0DAzFikufpZb5MDOS0+QAtXWQ4el4Ve+3lmIqqh99riKxysoshITFnJ8Zx17K+Cljwos5O9u1Q1Nhb9G+CptfrSSaOpN2Qsw8R2Fovz43yrsJtJKheigF0o8oyAXba/OZaYSH/hXjVOOJLTd5gnJqZq6/ig6v/UWh1OHwTNe43VZEoyZfj9XBuH4A2wbR58SZUvd9+12u2TeL1wDd8OFEJkU0mLLaKp4h374wjJkTsVnHHi/3g0X7l6CWdkA+9eip7+TreKnpppiZN4NskAHxLrwumtCjAeQ/KgUBQ2eb9v641LH64EL5Qa5KgeErkqnCq5DXPt8bp668Aw9NyIkv8Re/DzG80NQZh3YLNlxFeAjUx7TublrBKfS9AfakiEm3ix9qwerHN/vvGMbjNH/GxbHmeah88AYI2gou19NC45NPIr4EKfP3HET2sYqLXVcCLwWozrO/W51G3YQEVDfXW/7LAObpqVaNo9kXDayJbY4Rtiz6LqF8tfHrhH4931QaePvyhMdFWDWDBv1jZn6hTz/0mN5YSDUFuwM/SKrhj1jQCWcONUb3ZLo143QAMKzjDYrHQdnw0rrdmiGyFJdSayZNDVXeSHo=

Mesh out_mesh; // surface mesh data structure
std::vector<Alpha_shape_3::Facet > Facets;
alpha_shape.get_alpha_shape_facets(std::back_inserter(Facets),
Alpha_shape_3::REGULAR);
for (auto i = 0; i < Facets.size(); i++)
{

//checks for exterior cells
if (alpha_shape.classify(Facets[i].first) != Alpha_shape_3::EXTERIOR)
{
Facets[i] = alpha_shape.mirror_facet(Facets[i]);
}

CGAL_assertion(alpha_shape.classify(Facets[i].first) ==
Alpha_shape_3::EXTERIOR);

// gets indices of alpha shape and gets consistent orientation
int indices[3] = { (Facets[i].second + 1) % 4, (Facets[i].second + 2)
% 4, (Facets[i].second + 3) % 4 };
if (Facets[i].second % 2 == 0) {
std::swap(indices[0], indices[1]);
}

// adds data to cgal mesh
for (auto j = 0; j < 3; ++j) {
out_mesh.add_vertex(Facets[i].first->vertex(indices[j])->point());
}
auto v0 = static_cast<vertex_descriptor>(3 * i);
auto v1 = static_cast<vertex_descriptor>(3 * i + 1);
auto v2 = static_cast<vertex_descriptor>(3 * i + 2);
out_mesh.add_face(v0, v1, v2);
}



--
Sent from: http://cgal-discuss.949826.n4.nabble.com/



Archive powered by MHonArc 2.6.18.

Top of Page