CGAL 4.12 - Polygon Mesh Processing
Intersection Functions

Functions to test if there are self intersections, and to report faces that do intersect.

## Functions

template<class TriangleMesh , class OutputIterator , class NamedParameters >
OutputIterator CGAL::Polygon_mesh_processing::self_intersections (const TriangleMesh &tmesh, OutputIterator out, const NamedParameters &np)
detects and records self-intersections of a triangulated surface mesh. More...

template<class TriangleMesh , class FaceRange , class OutputIterator , class NamedParameters >
OutputIterator CGAL::Polygon_mesh_processing::self_intersections (const FaceRange &face_range, const TriangleMesh &tmesh, OutputIterator out, const NamedParameters &np)
Same as above but the self-intersections reported are only limited to the faces in face_range. More...

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

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

## ◆ does_self_intersect() [1/2]

template<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
 TriangleMesh a model of FaceListGraph NamedParameters a sequence of Named Parameters
Parameters
 tmesh the triangulated surface mesh to be tested np optional sequence of Named Parameters among the ones listed below
Named Parameters
 vertex_point_map the property map with the points associated to the vertices of tmesh. If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in TriangleMesh geom_traits an instance of a geometric traits class, model of PMPSelfIntersectionTraits
Returns
true if tmesh self-intersects
Examples:
Polygon_mesh_processing/self_intersections_example.cpp.

## ◆ does_self_intersect() [2/2]

template<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
 FaceRange a range of face_descriptor TriangleMesh a model of FaceListGraph NamedParameters a sequence of Named Parameters
Parameters
 face_range the set of faces to test for self-intersection tmesh the triangulated surface mesh to be tested np optional sequence of Named Parameters among the ones listed below
Named Parameters
 vertex_point_map the property map with the points associated to the vertices of tmesh. If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in TriangleMesh geom_traits an instance of a geometric traits class, model of SelfIntersectionTraits
Returns
true if the faces in face_range self-intersects

## ◆ self_intersections() [1/2]

template<class TriangleMesh , class OutputIterator , class NamedParameters >
 OutputIterator CGAL::Polygon_mesh_processing::self_intersections ( const TriangleMesh & tmesh, OutputIterator out, const NamedParameters & np )

#include <CGAL/Polygon_mesh_processing/self_intersections.h>

detects and records self-intersections of a triangulated surface mesh.

This function depends on the package Intersecting Sequences of dD Iso-oriented Boxes

Precondition
CGAL::is_triangle_mesh(tmesh)
Template Parameters
 TriangleMesh a model of FaceListGraph OutputIterator a model of OutputIterator holding objects of type std::pair::face_descriptor, boost::graph_traits::face_descriptor> NamedParameters a sequence of Named 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 optional sequence of Named Parameters among the ones listed below
Named Parameters
 vertex_point_map the property map with the points associated to the vertices of pmesh. If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in TriangleMesh geom_traits an instance of a geometric traits class, model of PMPSelfIntersectionTraits
Returns
out
Examples:
Polygon_mesh_processing/self_intersections_example.cpp.

## ◆ self_intersections() [2/2]

template<class TriangleMesh , class FaceRange , class OutputIterator , class NamedParameters >
 OutputIterator CGAL::Polygon_mesh_processing::self_intersections ( const FaceRange & face_range, const TriangleMesh & tmesh, OutputIterator out, const NamedParameters & np )

#include <CGAL/Polygon_mesh_processing/self_intersections.h>

Same as above but the self-intersections reported are only limited to the faces in face_range.

Precondition
CGAL::is_triangle_mesh(tmesh)
Template Parameters
 FaceRange range of boost::graph_traits::face_descriptor, model of Range. Its iterator type is RandomAccessIterator. TriangleMesh a model of FaceListGraph OutputIterator a model of OutputIterator holding objects of type std::pair::face_descriptor, boost::graph_traits::face_descriptor> NamedParameters a sequence of Named 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 optional sequence of Named Parameters among the ones listed below
Named Parameters
 vertex_point_map the property map with the points associated to the vertices of pmesh. If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in TriangleMesh geom_traits an instance of a geometric traits class, model of PMPSelfIntersectionTraits