Functions to test if there are self intersections, and to report faces that do intersect.
template<class ConcurrencyTag = Sequential_tag, class TriangleMesh , class FaceRange , class FacePairOutputIterator , class NamedParameters >
FacePairOutputIterator CGAL::Polygon_mesh_processing::self_intersections (const FaceRange &face_range, const TriangleMesh &tmesh, FacePairOutputIterator out, const NamedParameters &np)
collects intersections between a subset of faces of a triangulated surface mesh. More...
template<class ConcurrencyTag = Sequential_tag, class TriangleMesh , class FacePairOutputIterator , class NamedParameters >
FacePairOutputIterator CGAL::Polygon_mesh_processing::self_intersections (const TriangleMesh &tmesh, FacePairOutputIterator out, const NamedParameters &np)
collects intersections between all the faces of a triangulated surface mesh. More...
template<class ConcurrencyTag = Sequential_tag, class FaceRange , class TriangleMesh , class NamedParameters >
bool CGAL::Polygon_mesh_processing::does_self_intersect (const FaceRange &face_range, const TriangleMesh &tmesh, const NamedParameters &np)
tests if a set of faces of a triangulated surface mesh self-intersects. More...
template<class ConcurrencyTag = Sequential_tag, class TriangleMesh , class NamedParameters >
bool CGAL::Polygon_mesh_processing::does_self_intersect (const TriangleMesh &tmesh, const NamedParameters &np)
tests if a triangulated surface mesh self-intersects. More...
◆ does_self_intersect() [1/2]
template<class ConcurrencyTag = Sequential_tag, class FaceRange , class TriangleMesh , class NamedParameters >
bool CGAL::Polygon_mesh_processing::does_self_intersect
(
const FaceRange &
face_range ,
const TriangleMesh &
tmesh ,
const NamedParameters &
np
)
#include <CGAL/Polygon_mesh_processing/self_intersections.h>
tests if a set of faces of a triangulated surface mesh self-intersects.
This function depends on the package Intersecting Sequences of dD Iso-oriented Boxes
Precondition CGAL::is_triangle_mesh(tmesh)
Template Parameters
Parameters
face_range the set of faces to test for self-intersection
tmesh the triangulated surface mesh to be tested
np an optional sequence of Named Parameters among the ones listed below
Optional Named Parameters
vertex_point_map
a property map associating points to the vertices of tmesh
Type: a class model of ReadWritePropertyMap
with boost::graph_traits<TriangleMesh>::vertex_descriptor
as key type and Point_3
as value type
Default: boost::get(CGAL::vertex_point, tmesh)
Extra: If this parameter is omitted, an internal property map for CGAL::vertex_point_t
should be available for the vertices of tmesh
.
geom_traits
Returns true
if the faces in face_range
self-intersect
◆ does_self_intersect() [2/2]
template<class ConcurrencyTag = Sequential_tag, class TriangleMesh , class NamedParameters >
bool CGAL::Polygon_mesh_processing::does_self_intersect
(
const TriangleMesh &
tmesh ,
const NamedParameters &
np
)
#include <CGAL/Polygon_mesh_processing/self_intersections.h>
tests if a triangulated surface mesh self-intersects.
This function depends on the package Intersecting Sequences of dD Iso-oriented Boxes
Precondition CGAL::is_triangle_mesh(tmesh)
Template Parameters
Parameters
tmesh the triangulated surface mesh to be tested
np an optional sequence of Named Parameters among the ones listed below
Optional Named Parameters
vertex_point_map
a property map associating points to the vertices of tmesh
Type: a class model of ReadWritePropertyMap
with boost::graph_traits<TriangleMesh>::vertex_descriptor
as key type and Point_3
as value type
Default: boost::get(CGAL::vertex_point, tmesh)
Extra: If this parameter is omitted, an internal property map for CGAL::vertex_point_t
should be available for the vertices of tmesh
.
geom_traits
Returns true
if tmesh
self-intersects
◆ self_intersections() [1/2]
template<class ConcurrencyTag = Sequential_tag, class TriangleMesh , class FaceRange , class FacePairOutputIterator , class NamedParameters >
FacePairOutputIterator CGAL::Polygon_mesh_processing::self_intersections
(
const FaceRange &
face_range ,
const TriangleMesh &
tmesh ,
FacePairOutputIterator
out ,
const NamedParameters &
np
)
#include <CGAL/Polygon_mesh_processing/self_intersections.h>
collects intersections between a subset of faces of a triangulated surface mesh.
Two faces are said to intersect if the corresponding triangles intersect and the intersection is not an edge nor a vertex incident to both faces.
This function depends on the package Intersecting Sequences of dD Iso-oriented Boxes
Precondition CGAL::is_triangle_mesh(tmesh)
Template Parameters
Parameters
face_range the range of faces to check for self-intersection.
tmesh the triangulated surface mesh to be checked
out output iterator to be filled with all pairs of non-adjacent faces that intersect
np an optional sequence of Named Parameters among the ones listed below
Optional Named Parameters
vertex_point_map
a property map associating points to the vertices of tmesh
Type: a class model of ReadWritePropertyMap
with boost::graph_traits<TriangleMesh>::vertex_descriptor
as key type and Point_3
as value type
Default: boost::get(CGAL::vertex_point, tmesh)
Extra: If this parameter is omitted, an internal property map for CGAL::vertex_point_t
should be available for the vertices of tmesh
.
geom_traits
◆ self_intersections() [2/2]
template<class ConcurrencyTag = Sequential_tag, class TriangleMesh , class FacePairOutputIterator , class NamedParameters >
FacePairOutputIterator CGAL::Polygon_mesh_processing::self_intersections
(
const TriangleMesh &
tmesh ,
FacePairOutputIterator
out ,
const NamedParameters &
np
)
#include <CGAL/Polygon_mesh_processing/self_intersections.h>
collects intersections between all the faces of a triangulated surface mesh.
Two faces are said to intersect if the corresponding triangles intersect and the intersection is not an edge nor a vertex incident to both faces.
This function depends on the package Intersecting Sequences of dD Iso-oriented Boxes
Precondition CGAL::is_triangle_mesh(tmesh)
Template Parameters
Parameters
tmesh the triangulated surface mesh to be checked
out output iterator to be filled with all pairs of non-adjacent faces that intersect. In case tmesh
contains some degenerate faces, for each degenerate face f
a pair (f,f)
will be put in out
before any other self intersection between non-degenerate faces. These are the only pairs where degenerate faces will be reported.
np an optional sequence of Named Parameters among the ones listed below
Optional Named Parameters
vertex_point_map
a property map associating points to the vertices of tmesh
Type: a class model of ReadWritePropertyMap
with boost::graph_traits<TriangleMesh>::vertex_descriptor
as key type and Point_3
as value type
Default: boost::get(CGAL::vertex_point, tmesh)
Extra: If this parameter is omitted, an internal property map for CGAL::vertex_point_t
should be available for the vertices of tmesh
.
geom_traits
Returns out