\( \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 5.0.2 - Polygon Mesh Processing
Intersection Detection Functions

Functions to detect intersections.

Note that those functions will be exact as long as the underlying do-intersect predicates used are exact. In practice, it means that the 3D point type used must come from a CGAL kernel with exact predicates.

Functions

template<class PolylineRange >
bool CGAL::Polygon_mesh_processing::do_intersect (const PolylineRange &polylines1, const PolylineRange &polylines2)
 returns true if there exists a segment of a polyline of polylines1 and a segment of a polyline of polylines2 which intersect, and false otherwise. More...
 
template<class Polyline >
bool CGAL::Polygon_mesh_processing::do_intersect (const Polyline &polyline1, const Polyline &polyline2)
 returns true if there exists a segment of polyline1 and a segment of polyline2 which intersect, and false otherwise. More...
 
template<class TriangleMesh , class NamedParameters1 , class NamedParameters2 >
bool CGAL::Polygon_mesh_processing::do_intersect (const TriangleMesh &tm1, const TriangleMesh &tm2, const NamedParameters1 &np1, const NamedParameters2 &np2)
 returns true if there exists a face of tm1 and a face of tm2 which intersect, and false otherwise. More...
 
template<class TriangleMesh , class PolylineRange , class NamedParameters >
bool CGAL::Polygon_mesh_processing::do_intersect (const TriangleMesh &tm, const PolylineRange &polylines, const NamedParameters &np)
 returns true if there exists a face of tm and a segment of a polyline of polylines which intersect, and false otherwise. More...
 
template<class TriangleMesh , class Polyline , class NamedParameters >
bool CGAL::Polygon_mesh_processing::do_intersect (const TriangleMesh &tm, const Polyline &polyline, const NamedParameters &np)
 returns true if there exists a face of tm and a segment of polyline which intersect, and false otherwise. More...
 
template<class TriangleMeshRange , class OutputIterator , class NamedParameters , class NamedParametersRange >
OutputIterator CGAL::Polygon_mesh_processing::intersecting_meshes (const TriangleMeshRange &range, OutputIterator out, NamedParameters np, NamedParametersRange nps)
 detects and reports all the pairs of meshes intersecting in a range of triangulated surface meshes. More...
 

Function Documentation

◆ do_intersect() [1/5]

template<class PolylineRange >
bool CGAL::Polygon_mesh_processing::do_intersect ( const PolylineRange &  polylines1,
const PolylineRange &  polylines2 
)

#include <CGAL/Polygon_mesh_processing/intersection.h>

returns true if there exists a segment of a polyline of polylines1 and a segment of a polyline of polylines2 which intersect, and false otherwise.

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

Template Parameters
PolylineRangea RandomAccessRange of RandomAccessRange of points. The point type must be from a 3D point from a CGAL Kernel. A polyline is defined as a sequence of points, each pair of contiguous points defines a segment of the polyline. If the first and last points of the polyline are identical, the polyline is closed.
Parameters
polylines1the first range of polylines to check for intersections.
polylines2the second range of polylines to check for intersections.

◆ do_intersect() [2/5]

template<class Polyline >
bool CGAL::Polygon_mesh_processing::do_intersect ( const Polyline &  polyline1,
const Polyline &  polyline2 
)

#include <CGAL/Polygon_mesh_processing/intersection.h>

returns true if there exists a segment of polyline1 and a segment of polyline2 which intersect, and false otherwise.

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

Template Parameters
Polylinea RandomAccessRange of points. The point type must be from a 3D point type from CGAL Kernel. A polyline is defined as a sequence of points, each pair of contiguous points defines a segment of the polyline. If the first and last points of the polyline are identical, the polyline is closed.
Parameters
polyline1the first polyline to check for intersections.
polyline2the second polyline to check for intersections.

◆ do_intersect() [3/5]

template<class TriangleMesh , class NamedParameters1 , class NamedParameters2 >
bool CGAL::Polygon_mesh_processing::do_intersect ( const TriangleMesh &  tm1,
const TriangleMesh &  tm2,
const NamedParameters1 &  np1,
const NamedParameters2 &  np2 
)

#include <CGAL/Polygon_mesh_processing/intersection.h>

returns true if there exists a face of tm1 and a face of tm2 which intersect, and false otherwise.

If do_overlap_test_of_bounded_sides is set to true, the overlap of bounded sides are tested as well. In that case, the meshes must be closed. This function depends on the package Intersecting Sequences of dD Iso-oriented Boxes.

Precondition
CGAL::is_triangle_mesh(tm1)
CGAL::is_triangle_mesh(tm2)
!do_overlap_test_of_bounded_sides || CGAL::is_closed(tm1)
!do_overlap_test_of_bounded_sides || CGAL::is_closed(tm2)
Template Parameters
TriangleMesha model of FaceListGraph
NamedParameters1a sequence of Named Parameters for Polygon Mesh Processing for tm1
NamedParameters2a sequence of Named Parameters for Polygon Mesh Processing for tm2
Parameters
tm1the first triangulated surface mesh to check for intersections
tm2the second triangulated surface mesh to check for intersections
np1optional sequence of Named Parameters for Polygon Mesh Processing for tm1, among the ones listed below
np2optional sequence of Named Parameters for Polygon Mesh Processing for tm2, among the ones listed below
Named Parameters
vertex_point_mapthe property map with the points associated to the vertices of tm1 (tm2).
Attention
The two property maps must have the same value_type.
If this parameter is omitted, an internal property map for CGAL::vertex_point_t must be available in TriangleMesh
geom_traitsan instance of a geometric traits class, model of PMPSelfIntersectionTraits
do_overlap_test_of_bounded_sidesif set to true tests also the overlap of the bounded sides of tm1 and tm2. If false (default), only the intersection of surface triangles are tested.

◆ do_intersect() [4/5]

template<class TriangleMesh , class PolylineRange , class NamedParameters >
bool CGAL::Polygon_mesh_processing::do_intersect ( const TriangleMesh &  tm,
const PolylineRange &  polylines,
const NamedParameters &  np 
)

#include <CGAL/Polygon_mesh_processing/intersection.h>

returns true if there exists a face of tm and a segment of a polyline of polylines which intersect, and false otherwise.

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

Precondition
CGAL::is_triangle_mesh(tm)
Template Parameters
TriangleMesha model of FaceListGraph
PolylineRangea RandomAccessRange of RandomAccessRange of points. The point type of the range must be the same as the value type of the vertex point map. A polyline is defined as a sequence of points, each pair of contiguous points defines a segment of the polyline. If the first and last points of the polyline are identical, the polyline is closed.
NamedParametersa sequence of Named Parameters for Polygon Mesh Processing
Parameters
tmthe triangulated surface mesh to check for intersections
polylinesthe range of polylines to check for intersections.
npoptional sequence of Named Parameters for Polygon Mesh Processing among the ones listed below
Named Parameters
vertex_point_mapthe property map with the points associated to the vertices of tm. If this parameter is omitted, an internal property map for CGAL::vertex_point_t must be available in TriangleMesh
geom_traitsan instance of a geometric traits class, model of PMPSelfIntersectionTraits

◆ do_intersect() [5/5]

template<class TriangleMesh , class Polyline , class NamedParameters >
bool CGAL::Polygon_mesh_processing::do_intersect ( const TriangleMesh &  tm,
const Polyline &  polyline,
const NamedParameters &  np 
)

#include <CGAL/Polygon_mesh_processing/intersection.h>

returns true if there exists a face of tm and a segment of polyline which intersect, and false otherwise.

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

Precondition
CGAL::is_triangle_mesh(tm)
Template Parameters
TriangleMesha model of FaceListGraph
Polylinea RandomAccessRange of points. The point type of the range must be the same as the value type of the vertex point map. A polyline is defined as a sequence of points, each pair of contiguous points defines a segment of the polyline. If the first and last points of the polyline are identical, the polyline is closed.
NamedParametersa sequence of Named Parameters for Polygon Mesh Processing
Parameters
tmthe triangulated surface mesh to check for intersections
polylinethe polyline to check for intersections.
npoptional sequence of Named Parameters for Polygon Mesh Processing among the ones listed below
Named Parameters
vertex_point_mapthe property map with the points associated to the vertices of tn. If this parameter is omitted, an internal property map for CGAL::vertex_point_t must be available in TriangleMesh
geom_traitsan instance of a geometric traits class, model of PMPSelfIntersectionTraits

◆ intersecting_meshes()

template<class TriangleMeshRange , class OutputIterator , class NamedParameters , class NamedParametersRange >
OutputIterator CGAL::Polygon_mesh_processing::intersecting_meshes ( const TriangleMeshRange &  range,
OutputIterator  out,
NamedParameters  np,
NamedParametersRange  nps 
)

#include <CGAL/Polygon_mesh_processing/intersection.h>

detects and reports all the pairs of meshes intersecting in a range of triangulated surface meshes.

A pair of meshes intersecting is put in the output iterator out as a std::pair<std::size_t, std::size_t>, each index refering to the index of the triangle mesh in the input range. If do_overlap_test_of_bounded_sides is true, the overlap of bounded sides are tested as well. In that case, the meshes must be closed. This function depends on the package Intersecting Sequences of dD Iso-oriented Boxes.

Template Parameters
TriangleMeshRangea model of RandomAccessRange of triangulated surface meshes model of FaceListGraph.
OutputIteratoran output iterator in which std::pair<std::size_t, std::size_t> can be put.
NamedParametersa sequence of Named Parameters for Polygon Mesh Processing for the algorithm
NamedParametersRangea range of named parameters for the meshes.
Parameters
rangethe range of triangulated surface meshes to be checked for intersections.
outoutput iterator used to collect pairs of intersecting meshes.
npan optional sequence named parameters among the one listed below
Named Parameters
geom_traitsan instance of a geometric traits class, model of PMPSelfIntersectionTraits. The default value for geom_traits is CGAL::Kernel_traits<Point>Kernel, where Point is the value type of the vertex point map of the meshes.
do_overlap_test_of_bounded_sidesif set to true reports also overlap of bounded sides of meshes. If false (default), only the intersection of surface triangles are tested.
Parameters
npsan optional range of vertex_point_map named parameters containing the VertexPointMap of each mesh in range, in the same order. If this parameter is omitted, then an internal property map for CGAL::vertex_point_t must be available for every mesh in the range. All the vertex point maps must be of the same type.
Named Parameters
vertex_point_mapthe property map with the points associated to the vertices of a mesh. If this parameter is omitted, an internal property map for CGAL::vertex_point_t must be available in the triangle mesh type used in the range