From bfe03f16ebd56da4e669c9ca4475cadad0916751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Fri, 31 Jul 2015 16:26:11 +0200 Subject: [PATCH] add debug function --- .../CGAL/Polygon_mesh_processing/repair.h | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair.h index 349a0439aaa..851f6a6ff77 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair.h @@ -33,6 +33,61 @@ namespace CGAL{ namespace Polygon_mesh_processing { +namespace debug{ + template + std::ostream& dump_edge_neighborhood( + typename boost::graph_traits::edge_descriptor ed, + TriangleMesh& tmesh, + const VertexPointMap& vpmap, + std::ostream& out) + { + typedef boost::graph_traits GT; + typedef typename GT::halfedge_descriptor halfedge_descriptor; + typedef typename GT::vertex_descriptor vertex_descriptor; + typedef typename GT::face_descriptor face_descriptor; + + halfedge_descriptor h = halfedge(ed, tmesh); + + std::map vertices; + std::set faces; + int vindex=0; + BOOST_FOREACH(halfedge_descriptor hd, halfedges_around_target(h, tmesh)) + { + if ( vertices.insert(std::make_pair(source(hd, tmesh), vindex)).second ) + ++vindex; + if (!is_border(hd, tmesh)) + faces.insert( face(hd, tmesh) ); + } + + h=opposite(h, tmesh); + BOOST_FOREACH(halfedge_descriptor hd, halfedges_around_target(h, tmesh)) + { + if ( vertices.insert(std::make_pair(source(hd, tmesh), vindex)).second ) + ++vindex; + if (!is_border(hd, tmesh)) + faces.insert( face(hd, tmesh) ); + } + + std::vector ordered_vertices(vertices.size()); + typedef std::pair Pair_type; + BOOST_FOREACH(const Pair_type& p, vertices) + ordered_vertices[p.second]=p.first; + + out << "OFF\n" << ordered_vertices.size() << " " << faces.size() << " 0\n"; + BOOST_FOREACH(vertex_descriptor vd, ordered_vertices) + out << get(vpmap, vd) << "\n"; + BOOST_FOREACH(face_descriptor fd, faces) + { + out << "3"; + h=halfedge(fd,tmesh); + BOOST_FOREACH(halfedge_descriptor hd, halfedges_around_face(h, tmesh)) + out << " " << vertices[target(hd, tmesh)]; + out << "\n"; + } + return out; + } +} //end of namespace debug + template struct Less_vertex_point{ typedef typename boost::graph_traits::vertex_descriptor vertex_descriptor;