\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 4.11 - Polygon Mesh Processing
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Todo List
Member CGAL::Polygon_mesh_processing::fair (TriangleMesh &tmesh, const VertexRange &vertices, const NamedParameters &np)
accuracy of solvers are not good, for example when there is no boundary condition pre_factor should fail, but it does not.
Member CGAL::Polygon_mesh_processing::is_outward_oriented (const PolygonMesh &pmesh, const NamedParameters &np)
code : The following only handles polyhedron with one connected component the code, the sample example and the plugin must be updated.
Member CGAL::Polygon_mesh_processing::isotropic_remeshing (const FaceRange &faces, const double &target_edge_length, PolygonMesh &pmesh, const NamedParameters &np)

add possibility to provide a functor that projects to a prescribed surface

Deal with exact constructions Kernel. The only thing that makes sense is to guarantee that the output vertices are exactly on the input surface. To do so, we can do every construction in double, and use an exact process for projection. For each vertex, the AABB_tree would be used in an inexact manner to find the triangle on which projection has to be done. Then, use CGAL::intersection(triangle, line) in the exact constructions kernel to get a point which is exactly on the surface.

Member CGAL::Polygon_mesh_processing::refine (TriangleMesh &tmesh, const FaceRange &faces, FaceOutputIterator faces_out, VertexOutputIterator vertices_out, const NamedParameters &np)
current algorithm iterates 10 times at most, since (I guess) there is no termination proof.
Member CGAL::Polygon_mesh_processing::triangulate_and_refine_hole (PolygonMesh &pmesh, typename boost::graph_traits< PolygonMesh >::halfedge_descriptor border_halfedge, FaceOutputIterator face_out, VertexOutputIterator vertex_out, const NamedParameters &np)
handle islands
Member CGAL::Polygon_mesh_processing::triangulate_hole (PolygonMesh &pmesh, typename boost::graph_traits< PolygonMesh >::halfedge_descriptor border_halfedge, OutputIterator out, const NamedParameters &np)

handle islands

Replace border_halfedge by a range of border halfedges. The first one would describe the hole, the other ones would describe the islands.

Then, insert the holes vertices in the set of possibilities for connecting vertices together

handle the case where an island is reduced to a point

Member CGAL::Polygon_mesh_processing::triangulate_hole_polyline (const PointRange1 &points, const PointRange2 &third_points, OutputIterator out, const NamedParameters &np)
handle islands
Member CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole (PolygonMesh &pmesh, typename boost::graph_traits< PolygonMesh >::halfedge_descriptor border_halfedge, FaceOutputIterator face_out, VertexOutputIterator vertex_out, const NamedParameters &np)
handle islands
Class CGAL::Polygon_mesh_slicer< TriangleMesh, Traits, VertexPointMap, AABBTree, UseParallelPlaneOptimization >

Shall we document more in details what is required? Traits must provide:

  • Plane_3
  • Point_3
  • Segment_3
  • Oriented_side_3 with Oriented_side operator()(Plane_3, Point_3)
  • Do_intersect_3 with boost::optional<variant<Point_3,Segment_3> operator()(Plane_3,Segment_3)
  • Do_intersect_3 with bool operator()(Plane_3, Bbox_3)

If we keep the traits for plane orthogonal to a frame axis, Traits must also provide:

  • FT
  • Construct_cartesian_const_iterator_3 with Iterator operator()(Point_3) Iterator being a random access iterator with FT as value type
  • Construct_point_3 with Point_3 operator()(FT,FT,FT); Construct_source_3 with const Point_3& operator()(Segment_3)
  • Construct_target_3 with const Point_3& operator()(Segment_3)

_object() functions must also be provided

Group namedparameters
reorder this list, maybe
Group PkgPolygonMeshProcessing

add clip_triangle_mesh() using the code of Polyhedron_place_clipping.h and PMP::corefine()

fix and restore remove_degenerate_faces in the user and the reference manual

page User Manual
more information on coplanar patches.