CGAL 6.0 - Polygon Mesh Processing
Loading...
Searching...
No Matches
Todo List
Member CGAL::Polygon_mesh_processing::extract_boundary_cycles (const PolygonMesh &pm, OutputIterator out)

It could make sense to also return the length of each cycle.

It should probably go into BGL package (like the rest of this file).

Member CGAL::Polygon_mesh_processing::fair (TriangleMesh &tmesh, const VertexRange &vertices, const NamedParameters &np=parameters::default_values())
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::isotropic_remeshing (const FaceRange &faces, SizingFunction &sizing, PolygonMesh &pmesh, const NamedParameters &np=parameters::default_values())
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=parameters::default_values())
current algorithm iterates 10 times at most, since (I guess) there is no termination proof.
Member CGAL::Polygon_mesh_processing::remove_almost_degenerate_faces (const FaceRange &face_range, TriangleMesh &tmesh, const NamedParameters &np=parameters::default_values())
check what to use as priority queue with removable elements, set might not be optimal
Member CGAL::Polygon_mesh_processing::tangential_relaxation (const VertexRange &vertices, TriangleMesh &tm, const NamedParameters &np=parameters::default_values())
check if it should really be a triangle mesh or if a polygon mesh is fine
Member CGAL::Polygon_mesh_processing::triangulate_and_refine_hole (PolygonMesh &pmesh, typename boost::graph_traits< PolygonMesh >::halfedge_descriptor border_halfedge, const NamedParameters &np=parameters::default_values())
handle islands
Member CGAL::Polygon_mesh_processing::triangulate_hole (PolygonMesh &pmesh, typename boost::graph_traits< PolygonMesh >::halfedge_descriptor border_halfedge, const NamedParameters &np=parameters::default_values())

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=parameters::default_values())
handle islands
Member CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole (PolygonMesh &pmesh, typename boost::graph_traits< PolygonMesh >::halfedge_descriptor border_halfedge, const NamedParameters &np=parameters::default_values())
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 std::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

Member CGAL::Polyhedral_envelope< GeomTraits >::operator() (const TriangleMesh &tmesh, const NamedParameters &np=parameters::default_values()) const

Add ConcurrencyTag as template parameter + use TBB parallel for

Find a way to test the containment of the vertices first and then the triangles. It requires to have a map vertex->prism id so that we can test if the 3 vertices of a face are in the same face + have the initial list of prisms.

apply that to the soup versions

page User Manual
more information on coplanar patches.