\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
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...
 

Function Documentation

◆ 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
TriangleMesha model of FaceListGraph
NamedParametersa sequence of Named Parameters
Parameters
tmeshthe triangulated surface mesh to be tested
npoptional sequence of Named Parameters among the ones listed below
Named Parameters
vertex_point_mapthe 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_traitsan 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
FaceRangea range of face_descriptor
TriangleMesha model of FaceListGraph
NamedParametersa sequence of Named Parameters
Parameters
face_rangethe set of faces to test for self-intersection
tmeshthe triangulated surface mesh to be tested
npoptional sequence of Named Parameters among the ones listed below
Named Parameters
vertex_point_mapthe 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_traitsan 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
TriangleMesha model of FaceListGraph
OutputIteratora model of OutputIterator holding objects of type std::pair<boost::graph_traits<TriangleMesh>::face_descriptor, boost::graph_traits<TriangleMesh>::face_descriptor>
NamedParametersa sequence of Named Parameters
Parameters
tmeshthe triangulated surface mesh to be checked
outoutput 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.
npoptional sequence of Named Parameters among the ones listed below
Named Parameters
vertex_point_mapthe 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_traitsan 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
FaceRangerange of boost::graph_traits<TriangleMesh>::face_descriptor, model of Range. Its iterator type is RandomAccessIterator.
TriangleMesha model of FaceListGraph
OutputIteratora model of OutputIterator holding objects of type std::pair<boost::graph_traits<TriangleMesh>::face_descriptor, boost::graph_traits<TriangleMesh>::face_descriptor>
NamedParametersa sequence of Named Parameters
Parameters
face_rangethe range of faces to check for self-intersection.
tmeshthe triangulated surface mesh to be checked
outoutput iterator to be filled with all pairs of non-adjacent faces that intersect
npoptional sequence of Named Parameters among the ones listed below
Named Parameters
vertex_point_mapthe 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_traitsan instance of a geometric traits class, model of PMPSelfIntersectionTraits