Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Is the following CDT buggy?

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Is the following CDT buggy?


Chronological Thread 
  • From: Andreas Fabri <>
  • To: "Sebastien Loriot ( via cgal-discuss Mailing List)" <>
  • Subject: Re: [cgal-discuss] Is the following CDT buggy?
  • Date: Mon, 14 Mar 2022 08:57:22 +0100
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23: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 Nv/WpLr
  • Ironport-hdrordr: A9a23:mnNn66p5X6LqErFa/RoBZngaV5qxeYIsimQD101hICG9Evb0qy ncpoV46faSskdoZJhAo6H4BEDuex3hHPJOkO4s1PKZLW/bUQiTTb2Kj7GM/9SIIUSXnYRgPO VbAsxD4bbLfDtHZKjBkWyF+poboOWvweSPuuab5XJsQQZ2S7gI1WtEIzfeNFJ2ADRcDZA0D9 6966N81kGdUEVSUf/+PEAse8Lqm+fm/aiWHSIuNloZ0021tBuN0pTdKDTw5GZibxp/hYgYtV L9uyjC242fn5iAu2Xh61M=
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: fWdBuD2H5edxJS6tVtIFVMSG5BjU28+0zQzFndtOJC13eSK1ZAp7TxbRIXIdMgQ/1ak3R/UBdD WR3U/mux4rgYRzZdo6EYek70xi1oYgkxZ6GH5Ql8Z6bnGi+sEQqFrEJ6yhz7nLKzuvYLI80Qdu FBENZuyNCYHXz3nFXGOWq0uvDIEcIa/u6gv8ENn/FNasDiqjSr8B6hRBy6d3g5ZljwjzxX7lPS wpYmaV3RrlHDcv6jVAoZnKx8y94IwDAn+thm9acvR85LuQZTwo2zq6sb5qRUFcseSDQF2AtbEm 6vQohNysVp1Tn7pmU2hta38C

Hello,

Note that write_VTU is documented in the  CGAL package 2D Conforming Triangulations and Meshes.

When you call a function like refine_Delaunay_mesh()  you define the domain (for example the interior
of your polygon, as a domain, otherwise the convex hull of the points is the domain.

When you follow the example Sebastien just gave you  must adapt it, as the Delaunay_mesh_face_base_2
class has a function to set the domain.

https://doc.cgal.org/latest/Mesh_2/classDelaunayMeshFaceBase__2.html#ac4a80317799961e7830b9690121d6bdc

Best,

Andreas


On 3/14/2022 8:40 AM, Sebastien Loriot ( via cgal-discuss Mailing List) wrote:
A triangulation of a point set is a triangulation of the convex hull of the points. If some constrain edges are added, you then have the guarantee that those edges will be present in the triangulation of the
convex hull of your points.

If your constraints define a closed shape then you need a flooding like
algorithm to only pick the triangles that are inside the shape, like in
this example:

https://doc.cgal.org/latest/Triangulation_2/Triangulation_2_2polygon_triangulation_8cpp-example.html

Best,

Sebastien.

On 3/13/22 02:46, Bob Bill ( via cgal-discuss Mailing List) wrote:
I am given the vertices of a polygon, and I need to mesh it. I am following one of the first examples in the CDT package documentation.

The code is the following:

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Constrained_Delaunay_triangulation_2.h>
#include <CGAL/Delaunay_mesher_2.h>
#include <CGAL/Delaunay_mesh_face_base_2.h>
#include <CGAL/Delaunay_mesh_size_criteria_2.h>
#include <CGAL/IO/write_VTU.h>

#include <iostream>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Triangulation_vertex_base_2<K> Vb;
typedef CGAL::Delaunay_mesh_face_base_2<K> Fb;
typedef CGAL::Triangulation_data_structure_2<Vb, Fb> Tds;
typedef CGAL::Constrained_Delaunay_triangulation_2<K, Tds> CDT;
typedef CGAL::Delaunay_mesh_size_criteria_2<CDT> Criteria;
typedef CDT::Vertex_handle Vertex_handle;
typedef CDT::Point Point;

int main()
{
   CDT cdt;
   Vertex_handle va = cdt.insert(Point(-1,-1));
   Vertex_handle vb = cdt.insert(Point(-1,-0.25714));
   Vertex_handle vc = cdt.insert(Point(-1.5,-1.4));
   Vertex_handle vd = cdt.insert(Point(1.3,-1.2));
   Vertex_handle ve = cdt.insert(Point(1.3,0.5));
   Vertex_handle vf = cdt.insert(Point(1, 0.45714));
   Vertex_handle vg = cdt.insert(Point(1, -1));

   cdt.insert_constraint(va, vb);
   cdt.insert_constraint(vb, vc);
   cdt.insert_constraint(vc, vd);
   cdt.insert_constraint(vd, ve);
   cdt.insert_constraint(ve,vf);
   cdt.insert_constraint(vf,vg);
   cdt.insert_constraint(vg,va);
   std::cout << "Number of vertices: " << cdt.number_of_vertices() << std::endl;
   std::cout << "Meshing the triangulation..." << std::endl;
   // CGAL::refine_Delaunay_mesh_2(cdt, Criteria(0.125, 0.5));
   std::cout << "Number of vertices: " << cdt.number_of_vertices() << std::endl;

   std::ofstream output("intersected_mesh.vtu");
   CGAL::write_vtu(output, cdt);

//Show the vertices of the triangulation
     for(auto it = cdt.finite_faces_begin();it!=cdt.finite_faces_end();++it){
     std::cout << cdt.triangle(it) <<'\n';
   }
}

If I look at the .vtu file, it seems to have the correct shape (see attached image). However, after I printed the vertices for each triangle, it appears that one element of the triangulation is also the one with vertices
(-1, -0.25714)
(1, -1)
(1, 0.45714)

which should not be there since is not inside that polygon. Isn't this a bug? If not, how can I create a mesh for which this is avoided? I mean, I'd like to have all the triangles inside the domain.

Best regards,
Bob

--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss


--
Andreas Fabri, PhD
Chief Officer, GeometryFactory
Editor, The CGAL Project




Archive powered by MHonArc 2.6.19+.

Top of Page