- 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.