Skip to Content.
Sympa Menu

cgal-discuss - [cgal-discuss] Euler characteristic of 3D triangulation

Subject: CGAL users discussion list

List archive

[cgal-discuss] Euler characteristic of 3D triangulation


Chronological Thread 
  • From: Adam Getchell <>
  • To:
  • Subject: [cgal-discuss] Euler characteristic of 3D triangulation
  • Date: Mon, 4 Apr 2016 20:06:37 -0700
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-phdr: 9a23:/K7e1BCqls7fQih09gmdUyQJP3N1i/DPJgcQr6AfoPdwSP7/o8bcNUDSrc9gkEXOFd2CrakU26yN4+u+ASQp2tWojjMrSNR0TRgLiMEbzUQLIfWuLgnFFsPsdDEwB89YVVVorDmROElRH9viNRWJ+iXhpQAbFhi3DwdpPOO9QteU1JTnkbvisMOLKyxzxxODIppKZC2sqgvQssREyaBDEY0WjiXzn31TZu5NznlpL1/A1zz158O34YIxu38I46FppIZ8VvDxcK08CLBZFz87KHsd5cvxtBCFQxHcyGEbVzA/nhNNSyfI8Br6U5P1+n/zuuN4niaXIcb2QLQwcTun5qZvDhTvjXFUZHYC7GjLh5ko3+pgqxW7qkknzg==

Hello all,

I was debugging my Pachner move code and ran into the lines:

frame #0: 0x000000010000fd61 unittests`CGAL::Triangulation_data_structure_3<CGAL::Triangulation_vertex_base_with_info_3<unsigned int, CGAL::Epick, CGAL::Triangulation_vertex_base_3<CGAL::Epick, CGAL::Triangulation_ds_vertex_base_3<void> > >, CGAL::Triangulation_cell_base_with_info_3<unsigned int, CGAL::Epick, CGAL::Triangulation_cell_base_3<CGAL::Epick, CGAL::Triangulation_ds_cell_base_3<void> > >, CGAL::Parallel_tag>::is_valid(this=0x0000000100703ea8, verbose=false, level=0) const + 769 at Triangulation_data_structure_3.h:3310
   3307       if ( cell_count - facet_count + edge_count - vertex_count != 0 ) {
   3308         if (verbose)
   3309             std::cerr << "Euler relation unsatisfied" << std::endl;
-> 3310         CGAL_triangulation_assertion(false);
   3311         return false;
   3312       }
   3313

Which is, I believe, enforcing the constraint that the Euler characteristic of the 3D (odd-dimensional manifold) is zero.

Now if I look at the (2,3) Pachner move implemented by flip(Cell_handle, facet) I count as follows:



On the left we have:

Cell count: 1345 + 2345 = 2
Facet count: 134 + 135 + 145 + 345 + 234 + 235 + 245 = 7
Edge count: 13 + 14 + 15 + 23 + 24 + 25 + 34 + 35 + 45 = 9
Vertex count: 5

2 - 7 + 9 - 5 = -1 != 0

On the right we have:

Cell count: 1235 + 1234 + 1245 = 3
Facet count: 123 + 125 + 135 + 235 + 124 + 134 + 234 + 145 + 245 = 9
Edge count: 12 + 13 + 14 + 15 + 23 + 24 + 25 + 34 + 35 + 45 = 10
Vertex count: 5

3 - 9 + 10 - 5 = -1 != 0

So, how am I counting wrong? Clearly flip() and flip_really() pass this test.

Looking at the literature[1], they count a triangle in the following manner:

1 2-face (the triangle), 3 1-faces (the edges), 3 0-faces (the vertices), plus the null set = 8. (!)

Any insights appreciated.

[1] http://www.mas.ncl.ac.uk/~nagr1/Colin.pdf


PNG image




Archive powered by MHonArc 2.6.18.

Top of Page