\( \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.8 - Polygon Mesh Processing

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Functions
Intersection Functions
Polygon Mesh Processing Reference

##

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

## Function Documentation

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.

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` that has an internal property map for `CGAL::vertex_point_t`
  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`
  geom_traits | an instance of a geometric traits class, model of `SelfIntersectionTraits`

Returns
  true if `tmesh` self-intersects

`#include <CGAL/Polygon_mesh_processing/self_intersections.h>`

Examples:
  Polygon_mesh_processing/self_intersections_example.cpp.

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.

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` that has an internal property map for `CGAL::vertex_point_t`
  OutputIterator | a model of `OutputIterator` holding objects of type `std::pair<boost::graph_traits<TriangleMesh>::face_descriptor, boost::graph_traits<TriangleMesh>::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
  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`
  geom_traits | an instance of a geometric traits class, model of `SelfIntersectionTraits`

Returns
  `out`

`#include <CGAL/Polygon_mesh_processing/self_intersections.h>`

Examples:
  Polygon_mesh_processing/self_intersections_example.cpp.

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

Precondition
  `CGAL::is_triangle_mesh(tmesh)`

Template Parameters

  FaceRange | range of `boost::graph_traits<PolygonMesh>::face_descriptor`, model of `Range`. Its iterator type is `RandomAccessIterator`.
  TriangleMesh | a model of `FaceListGraph` that has an internal property map for `CGAL::vertex_point_t`
  OutputIterator | a model of `OutputIterator` holding objects of type `std::pair<boost::graph_traits<TriangleMesh>::face_descriptor, boost::graph_traits<TriangleMesh>::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`
  geom_traits | an instance of a geometric traits class, model of `SelfIntersectionTraits`

`#include <CGAL/Polygon_mesh_processing/self_intersections.h>`