#include <CGAL/Polygon_mesh_slicer.h>
template<class TriangleMesh, class Traits, class VertexPointMap = typename boost::property_map< TriangleMesh, vertex_point_t>::type, class AABBTree = AABB_tree< AABB_traits<Traits, AABB_halfedge_graph_segment_primitive<TriangleMesh> > >, bool UseParallelPlaneOptimization = true>
class CGAL::Polygon_mesh_slicer< TriangleMesh, Traits, VertexPointMap, AABBTree, UseParallelPlaneOptimization >
Function object that computes the intersection of a plane with a triangulated surface mesh.
- Template Parameters
-
| TriangleMesh | a triangulated surface mesh, model of FaceGraph and HalfedgeListGraph |
| Traits | a model of AABBGeomTraits |
| VertexPointMap | a model of ReadablePropertyMap with boost::graph_traits<TriangleMesh>::vertex_descriptor as key and Traits::Point_3 as value type. The default is typename boost::property_map< TriangleMesh, vertex_point_t>::type. |
| AABBTree | must be an instantiation of CGAL::AABB_tree able to handle the edges of TriangleMesh, having its edge_descriptor as primitive id. The default is CGAL::AABB_tree<CGAL::AABB_traits< Traits, CGAL::AABB_halfedge_graph_segment_primitive<TriangleMesh> > > |
| UseParallelPlaneOptimization | if true, the code will use specific predicates and constructions in case the functor is called with a plane orthogonal to a frame axis, the non-null coefficient being 1 or -1. The default is true. |
The implemenation of this class depends on the package 3D Fast Intersection and Distance Computation.
- Examples:
- Polygon_mesh_processing/mesh_slicer_example.cpp.
template<class TriangleMesh, class Traits, class VertexPointMap = typename boost::property_map< TriangleMesh, vertex_point_t>::type, class AABBTree = AABB_tree< AABB_traits<Traits, AABB_halfedge_graph_segment_primitive<TriangleMesh> > >, bool UseParallelPlaneOptimization = true>
Constructor using edges(tmesh) to initialize the internal AABB_tree.
- Parameters
-
| tmesh | the triangulated surface mesh to be sliced. It must be valid and non modified as long as the functor is used. |
| vpmap | an instance of the vertex point property map associated to tmesh |
| traits | a traits class instance, can be omitted |
template<class TriangleMesh, class Traits, class VertexPointMap = typename boost::property_map< TriangleMesh, vertex_point_t>::type, class AABBTree = AABB_tree< AABB_traits<Traits, AABB_halfedge_graph_segment_primitive<TriangleMesh> > >, bool UseParallelPlaneOptimization = true>
| CGAL::Polygon_mesh_slicer< TriangleMesh, Traits, VertexPointMap, AABBTree, UseParallelPlaneOptimization >::Polygon_mesh_slicer |
( |
const TriangleMesh & |
tmesh, |
|
|
const AABBTree & |
tree, |
|
|
VertexPointMap |
vpmap, |
|
|
const Traits & |
traits = Traits() |
|
) |
| |
Constructor using a pre-built AABB_tree of edges provided by the user.
- Parameters
-
| tmesh | the triangulated surface mesh to be sliced. It must be valid and non modified as long as the functor is used. |
| tree | must be initialized with all the edges of tmesh |
| vpmap | an instance of the vertex point property map associated to tmesh |
| traits | a traits class instance, can be omitted |
template<class TriangleMesh, class Traits, class VertexPointMap = typename boost::property_map< TriangleMesh, vertex_point_t>::type, class AABBTree = AABB_tree< AABB_traits<Traits, AABB_halfedge_graph_segment_primitive<TriangleMesh> > >, bool UseParallelPlaneOptimization = true>
Constructor using edges(tmesh) to initialize the internal AABB_tree.
The vertex point property map used is get(CGAL::vertex_point, tmesh)
- Parameters
-
| tmesh | the triangulated surface mesh to be sliced. It must be valid and non modified as long as the functor is used. |
| traits | a traits class instance, can be omitted |
template<class TriangleMesh, class Traits, class VertexPointMap = typename boost::property_map< TriangleMesh, vertex_point_t>::type, class AABBTree = AABB_tree< AABB_traits<Traits, AABB_halfedge_graph_segment_primitive<TriangleMesh> > >, bool UseParallelPlaneOptimization = true>
Constructor using a AABB_tree provided by the user.
The vertex point property map used is get(CGAL::vertex_point, tmesh)
- Parameters
-
| tmesh | the triangulated surface mesh to be sliced. It must be valid and non modified as long as the functor is used. |
| tree | must be initialized with all the edges of tmesh |
| traits | a traits class instance, can be omitted |
template<class TriangleMesh, class Traits, class VertexPointMap = typename boost::property_map< TriangleMesh, vertex_point_t>::type, class AABBTree = AABB_tree< AABB_traits<Traits, AABB_halfedge_graph_segment_primitive<TriangleMesh> > >, bool UseParallelPlaneOptimization = true>
template<class OutputIterator >
Constructs the intersecting polylines of plane with the input triangulated surface mesh.
- Template Parameters
-
| OutputIterator | an output iterator accepting polylines. A polyline is provided as std::vector<Traits::Point_3>. A polyline is closed if its first and last point are identical. |
- Parameters
-
| plane | the plane to intersect the triangulated surface mesh with |
| out | output iterator of polylines |