CGAL 5.6.3 - 2D Regularized Boolean Set-Operations

Loading...
Searching...
No Matches
Functions
Polygon Intersection Testing Functions
2D Regularized Boolean Set-Operations Reference

##

There are several overloaded function templates called `do_intersect()` that determine whether the interior of two or more polygons intersect.

A function template in this group that accepts two input polygons has one of the following signatures:

1.1. | `bool do_intersect(const Type1& pgn1, const Type2& pgn2, UsePolylines = Tag_true());`
1.2. | `bool do_intersect(const Type1& pgn1, const Type2& pgn2);`
2. | `bool do_intersect(const Type1& pgn1, const Type2& pgn2, const GpsTraits& traits);`

There are also function templates that accept one or two ranges of input polygons:

3.1. | `bool do_intersect(InputIterator begin, InputIterator end, UsePolylines = Tag_true());`
3.2. | `bool do_intersect(InputIterator begin, InputIterator end);`
4. | `bool do_intersect(InputIterator begin, InputIterator end, const GpsTraits& traits);`
5.1. | `bool do_intersect(InputIterator1 begin1, InputIterator1 end1, InputIterator2 begin2, InputIterator2 end2, UsePolylines = Tag_true());`
5.2. | `bool do_intersect(InputIterator1 begin1, InputIterator1 end1, InputIterator2 begin2, InputIterator2 end2);`
6. | `bool do_intersect(InputIterator1 begin1, InputIterator1 end1, InputIterator2 begin2, InputIterator2 end2, const GpsTraits& traits);`

Template Parameters

  UsePolylines | determines whether the boundary of the input polygons are treated as a cyclic sequence of single ( \(x\)-monotone) segments or as a cyclic sequence of ( \(x\)-monotone) polylines. If substituted with `CGAL::Tag_true`, which is the default, the input polygons are converted to general polygons bounded by polylines before the operation is actually performed. If substituted with `CGAL::Tag_false`, the input polygons are used as is. Refer to Traits Selection for more information.

- The types `Type1` and `Type2` of the parameters of `InputIterator1::value_type` and `InputIterator2::value_type` must be convertible to the types specified in a row in the table below, respectively.
- The types that apply to signatures (1.1.) and (5.1.) above are restricted to those listed in rows 1–4 in the table below.
- The types that apply to signatures (1.2.) and (5.2.) above are restricted to those listed in rows 5–8 in the table below.
- The type of `InputIterator::value_type` in (3.1.) above must be convertible to either `Polygon_2` or `Polygon_with_holes_2`.
- The type of `InputIterator::value_type` in (3.2.) above must be convertible to either `General_polygon_2` or `General_polygon_with_holes_2`.

| `Type1` | `Type2`
--- | --- | ---
1 | `Polygon_2` | `Polygon_2`
2 | `Polygon_2` | `Polygon_with_holes_2`
3 | `Polygon_with_holes_2` | `Polygon_2`
4 | `Polygon_with_holes_2` | `Polygon_with_holes_2`
5 | `General_polygon_2` | `General_polygon_2`
6 | `General_polygon_2` | `General_polygon_with_holes_2`
7 | `General_polygon_with_holes_2` | `General_polygon_2`
8 | `General_polygon_with_holes_2` | `General_polygon_with_holes_2`

Parameters

  pgn1,pgn2 | the input polygons.
  (end,begin) | a range of input polygons.
  (end1,begin1) | the first range of input polygons.
  (end2,begin2) | the second range of input polygons.
  traits | an optional traits object.

See also
  `CGAL::complement()`
  `CGAL::intersection()`
  `CGAL::join()`
  `CGAL::difference()`
  `CGAL::symmetric_difference()`

## Functions
template<typename Kernel , typename Container >
bool | CGAL::do_intersect (const Polygon_2< Kernel, Container > &pgn1, const Polygon_2< Kernel, Container > &pgn2)
| determines whether two polygons intersect in their interior.
template<typename Kernel , typename Container , typename UsePolylines >
bool | CGAL::do_intersect (const Polygon_2< Kernel, Container > &pgn1, const Polygon_2< Kernel, Container > &pgn2, UsePolylines=Tag_true())
| determines whether two polygons intersect in their interior.
template<typename Kernel , typename Container >
bool | CGAL::do_intersect (const Polygon_2< Kernel, Container > &pgn1, const Polygon_with_holes_2< Kernel, Container > &pgn2)
| determines whether two polygons intersect in their interior.
template<typename Kernel , typename Container , typename UsePolylines >
bool | CGAL::do_intersect (const Polygon_2< Kernel, Container > &pgn1, const Polygon_with_holes_2< Kernel, Container > &pgn2, UsePolylines=Tag_true())
| determines whether two polygons intersect in their interior.
template<typename Kernel , typename Container >
bool | CGAL::do_intersect (const Polygon_with_holes_2< Kernel, Container > &pgn1, const Polygon_2< Kernel, Container > &pgn2)
| determines whether two polygons intersect in their interior.
template<typename Kernel , typename Container , typename UsePolylines >
bool | CGAL::do_intersect (const Polygon_with_holes_2< Kernel, Container > &pgn1, const Polygon_2< Kernel, Container > &pgn2, UsePolylines=Tag_true())
| determines whether two polygons intersect in their interior.
template<typename Kernel , typename Container >
bool | CGAL::do_intersect (const Polygon_with_holes_2< Kernel, Container > &pgn1, const Polygon_with_holes_2< Kernel, Container > &pgn2)
| determines whether two polygons with holes intersect in their interior.
template<typename Kernel , typename Container , typename UsePolylines >
bool | CGAL::do_intersect (const Polygon_with_holes_2< Kernel, Container > &pgn1, const Polygon_with_holes_2< Kernel, Container > &pgn2, UsePolylines=Tag_true())
| determines whether two polygons with holes intersect in their interior.
template<typename ArrTraits >
bool | CGAL::do_intersect (const General_polygon_2< ArrTraits > &pgn1, const General_polygon_2< ArrTraits > &pgn2)
| determines whether two general polygons intersect in their interior.
template<typename ArrTraits >
bool | CGAL::do_intersect (const General_polygon_2< ArrTraits > &pgn1, const General_polygon_with_holes_2< General_polygon_2< ArrTraits > > &pgn2)
| determines whether two general polygons intersect in their interior.
template<typename ArrTraits >
bool | CGAL::do_intersect (const General_polygon_with_holes_2< General_polygon_2< ArrTraits > > &pgn1, const General_polygon_2< ArrTraits > &pgn2)
| determines whether two general polygons intersect in their interior.
template<typename Polygon >
bool | CGAL::do_intersect (const General_polygon_with_holes_2< Polygon > &pgn1, const General_polygon_with_holes_2< Polygon > &pgn2)
| determines whether two general polygons with holes intersect in their interior.
template<typename InputIterator >
bool | CGAL::do_intersect (InputIterator begin, InputIterator end)
| Given a range of polygons or a range of polygons with holes (resp.
template<typename InputIterator , typename UsePolylines >
bool | CGAL::do_intersect (InputIterator begin, InputIterator end, UsePolylines=Tag_true())
| Given a range of polygons or a range of polygons with holes (resp.
template<typename InputIterator1 , typename InputIterator2 >
bool | CGAL::do_intersect (InputIterator1 begin1, InputIterator1 end1, InputIterator2 begin2, InputIterator2 end2)
| Given a range of polygons (resp.
template<typename InputIterator1 , typename InputIterator2 , typename UsePolylines >
bool | CGAL::do_intersect (InputIterator1 begin1, InputIterator1 end1, InputIterator2 begin2, InputIterator2 end2, UsePolylines=Tag_true())
| Given a range of polygons (resp.
template<typename Kernel , typename Container , typename GpsTraits >
bool | CGAL::do_intersect (const Polygon_2< Kernel, Container > &pgn1, const Polygon_2< Kernel, Container > &pgn2, const GpsTraits &traits)
| determines whether two polygons intersect in their interior.
template<typename Kernel , typename Container , typename GpsTraits >
bool | CGAL::do_intersect (const Polygon_2< Kernel, Container > &pgn1, const Polygon_with_holes_2< Kernel, Container > &pgn2, const GpsTraits &traits, const GpsTraits &traits)
| determines whether two polygons intersect in their interior.
template<typename Kernel , typename Container , typename GpsTraits >
bool | CGAL::do_intersect (const Polygon_with_holes_2< Kernel, Container > &pgn1, const Polygon_2< Kernel, Container > &pgn2, const GpsTraits &traits)
| determines whether two polygons intersect in their interior.
template<typename Kernel , typename Container , typename GpsTraits >
bool | CGAL::do_intersect (const Polygon_with_holes_2< Kernel, Container > &pgn1, const Polygon_with_holes_2< Kernel, Container > &pgn2, const GpsTraits &traits)
| determines whether two polygons with holes intersect in their interior.
template<typename ArrTraits , typename GpsTraits >
bool | CGAL::do_intersect (const General_polygon_2< ArrTraits > &pgn1, const General_polygon_2< ArrTraits > &pgn2, const GpsTraits &traits)
| determines whether two general polygons intersect in their interior.
template<typename ArrTraits , typename GpsTraits >
bool | CGAL::do_intersect (const General_polygon_2< ArrTraits > &pgn1, const General_polygon_with_holes_2< General_polygon_2< ArrTraits > > &pgn2, const GpsTraits &traits)
| determines whether two general polygons intersect in their interior.
template<typename ArrTraits , typename GpsTraits >
bool | CGAL::do_intersect (const General_polygon_with_holes_2< General_polygon_2< ArrTraits > > &pgn1, const General_polygon_2< ArrTraits > &pgn2, const GpsTraits &traits)
| determines whether two general polygons intersect in their interior.
template<typename Polygon , typename GpsTraits >
bool | CGAL::do_intersect (const General_polygon_with_holes_2< Polygon > &pgn1, const General_polygon_with_holes_2< Polygon > &pgn2, const GpsTraits &traits)
| determines whether two general polygons with holes intersect in their interior.
template<typename InputIterator , typename GpsTraits >
bool | CGAL::do_intersect (InputIterator begin, InputIterator end, const GpsTraits &traits)
| Given a range of polygons or a range of polygons with holes (resp.
template<typename InputIterator1 , typename InputIterator2 , typename GpsTraits >
bool | CGAL::do_intersect (InputIterator1 begin1, InputIterator1 end1, InputIterator2 begin2, InputIterator2 end2, const GpsTraits &traits)
| Given a range of polygons (resp.

## Function Documentation

## ◆ do_intersect() [1/26]

template<typename ArrTraits >

bool CGAL::do_intersect | ( | const General_polygon_2< ArrTraits > & | pgn1,
|  | const General_polygon_2< ArrTraits > & | pgn2
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two general polygons intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

Precondition
  `ArrTraits` must be a model of the concept `ArrangementDirectionalXMonotoneTraits_2`.

## ◆ do_intersect() [2/26]

template<typename ArrTraits , typename GpsTraits >

bool CGAL::do_intersect | ( | const General_polygon_2< ArrTraits > & | pgn1,
|  | const General_polygon_2< ArrTraits > & | pgn2,
|  | const GpsTraits & | traits
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two general polygons intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.
  traits | a traits object.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

Precondition
  `GpsTraits` must be a model of the concept `GeneralPolygonSetTraits_2`.
  `ArrTraits` must be a model of the concept `ArrangementDirectionalXMonotoneTraits_2`.

## ◆ do_intersect() [3/26]

template<typename ArrTraits >

bool CGAL::do_intersect | ( | const General_polygon_2< ArrTraits > & | pgn1,
|  | const General_polygon_with_holes_2< General_polygon_2< ArrTraits > > & | pgn2
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two general polygons intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

Precondition
  `ArrTraits` must be a model of the concept `ArrangementDirectionalXMonotoneTraits_2`.

## ◆ do_intersect() [4/26]

template<typename ArrTraits , typename GpsTraits >

bool CGAL::do_intersect | ( | const General_polygon_2< ArrTraits > & | pgn1,
|  | const General_polygon_with_holes_2< General_polygon_2< ArrTraits > > & | pgn2,
|  | const GpsTraits & | traits
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two general polygons intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.
  traits | a traits object.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

Precondition
  `GpsTraits` must be a model of the concept `GeneralPolygonSetTraits_2`.
  `ArrTraits` must be a model of the concept `ArrangementDirectionalXMonotoneTraits_2`.

## ◆ do_intersect() [5/26]

template<typename ArrTraits >

bool CGAL::do_intersect | ( | const General_polygon_with_holes_2< General_polygon_2< ArrTraits > > & | pgn1,
|  | const General_polygon_2< ArrTraits > & | pgn2
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two general polygons intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

Precondition
  `ArrTraits` must be a model of the concept `ArrangementDirectionalXMonotoneTraits_2`.

## ◆ do_intersect() [6/26]

template<typename ArrTraits , typename GpsTraits >

bool CGAL::do_intersect | ( | const General_polygon_with_holes_2< General_polygon_2< ArrTraits > > & | pgn1,
|  | const General_polygon_2< ArrTraits > & | pgn2,
|  | const GpsTraits & | traits
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two general polygons intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.
  traits | a traits object.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

Precondition
  `GpsTraits` must be a model of the concept `GeneralPolygonSetTraits_2`.
  `ArrTraits` must be a model of the concept `ArrangementDirectionalXMonotoneTraits_2`.

## ◆ do_intersect() [7/26]

template<typename Polygon >

bool CGAL::do_intersect | ( | const General_polygon_with_holes_2< Polygon > & | pgn1,
|  | const General_polygon_with_holes_2< Polygon > & | pgn2
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two general polygons with holes intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

## ◆ do_intersect() [8/26]

template<typename Polygon , typename GpsTraits >

bool CGAL::do_intersect | ( | const General_polygon_with_holes_2< Polygon > & | pgn1,
|  | const General_polygon_with_holes_2< Polygon > & | pgn2,
|  | const GpsTraits & | traits
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two general polygons with holes intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.
  traits | a traits object.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

Precondition
  `GpsTraits` must be a model of the concept `GeneralPolygonSetTraits_2`.
  `GpsTraits` must be a model of the concept `GeneralPolygonSetTraits_2`.

## ◆ do_intersect() [9/26]

template<typename Kernel , typename Container >

bool CGAL::do_intersect | ( | const Polygon_2< Kernel, Container > & | pgn1,
|  | const Polygon_2< Kernel, Container > & | pgn2
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two polygons intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

## ◆ do_intersect() [10/26]

template<typename Kernel , typename Container , typename GpsTraits >

bool CGAL::do_intersect | ( | const Polygon_2< Kernel, Container > & | pgn1,
|  | const Polygon_2< Kernel, Container > & | pgn2,
|  | const GpsTraits & | traits
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two polygons intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.
  traits | a traits object.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

Precondition
  `GpsTraits` must be a model of the concept `GeneralPolygonSetTraits_2`.

## ◆ do_intersect() [11/26]

template<typename Kernel , typename Container , typename UsePolylines >

bool CGAL::do_intersect | ( | const Polygon_2< Kernel, Container > & | pgn1,
|  | const Polygon_2< Kernel, Container > & | pgn2,
|  | UsePolylines | = `Tag_true()`
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two polygons intersect in their interior.

Template Parameters

  UsePolylines | determines whether the boundaries of `pgn1` and `pgn2` are treated as cyclic sequences of single ( \(x\)-monotone) segments or as a cyclic sequences of ( \(x\)-monotone) polylines. If substituted with `CGAL::Tag_true`, which is the default, `pgn1` and `pgn2` are converted to general polygons, bounded by polylines before the operation is actually performed. If substituted with `CGAL::Tag_false`, `pgn1` and `pgn2` are used as is. Refer to Traits Selection for more information.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

## ◆ do_intersect() [12/26]

template<typename Kernel , typename Container >

bool CGAL::do_intersect | ( | const Polygon_2< Kernel, Container > & | pgn1,
|  | const Polygon_with_holes_2< Kernel, Container > & | pgn2
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two polygons intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

## ◆ do_intersect() [13/26]

template<typename Kernel , typename Container , typename GpsTraits >

bool CGAL::do_intersect | ( | const Polygon_2< Kernel, Container > & | pgn1,
|  | const Polygon_with_holes_2< Kernel, Container > & | pgn2,
|  | const GpsTraits & | traits,
|  | const GpsTraits & | traits
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two polygons intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.
  traits | a traits object.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

Precondition
  `GpsTraits` must be a model of the concept `GeneralPolygonSetTraits_2`.

## ◆ do_intersect() [14/26]

template<typename Kernel , typename Container , typename UsePolylines >

bool CGAL::do_intersect | ( | const Polygon_2< Kernel, Container > & | pgn1,
|  | const Polygon_with_holes_2< Kernel, Container > & | pgn2,
|  | UsePolylines | = `Tag_true()`
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two polygons intersect in their interior.

Template Parameters

  UsePolylines | determines whether the boundaries of `pgn1` and `pgn2` are treated as cyclic sequences of single ( \(x\)-monotone) segments or as a cyclic sequences of ( \(x\)-monotone) polylines. If substituted with `CGAL::Tag_true`, which is the default, `pgn1` and `pgn2` are converted to a general polygon and a general polygon with holes, respectively, bounded by polylines before the operation is actually performed. If substituted with `CGAL::Tag_false`, `pgn1` and `pgn2` are used as is. Refer to Traits Selection for more information.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

## ◆ do_intersect() [15/26]

template<typename Kernel , typename Container >

bool CGAL::do_intersect | ( | const Polygon_with_holes_2< Kernel, Container > & | pgn1,
|  | const Polygon_2< Kernel, Container > & | pgn2
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two polygons intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

## ◆ do_intersect() [16/26]

template<typename Kernel , typename Container , typename GpsTraits >

bool CGAL::do_intersect | ( | const Polygon_with_holes_2< Kernel, Container > & | pgn1,
|  | const Polygon_2< Kernel, Container > & | pgn2,
|  | const GpsTraits & | traits
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two polygons intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.
  traits | a traits object.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

Precondition
  `GpsTraits` must be a model of the concept `GeneralPolygonSetTraits_2`.

## ◆ do_intersect() [17/26]

template<typename Kernel , typename Container , typename UsePolylines >

bool CGAL::do_intersect | ( | const Polygon_with_holes_2< Kernel, Container > & | pgn1,
|  | const Polygon_2< Kernel, Container > & | pgn2,
|  | UsePolylines | = `Tag_true()`
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two polygons intersect in their interior.

Template Parameters

  UsePolylines | determines whether the boundaries of `pgn1` and `pgn2` are treated as cyclic sequences of single ( \(x\)-monotone) segments or as a cyclic sequences of ( \(x\)-monotone) polylines. If substituted with `CGAL::Tag_true`, which is the default, `pgn1` and `pgn2` are converted to a general polygon with holes and a general polygon, respectively, bounded by polylines before the operation is actually performed. If substituted with `CGAL::Tag_false`, `pgn1` and `pgn2` are used as is. Refer to Traits Selection for more information.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

## ◆ do_intersect() [18/26]

template<typename Kernel , typename Container >

bool CGAL::do_intersect | ( | const Polygon_with_holes_2< Kernel, Container > & | pgn1,
|  | const Polygon_with_holes_2< Kernel, Container > & | pgn2
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two polygons with holes intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

## ◆ do_intersect() [19/26]

template<typename Kernel , typename Container , typename GpsTraits >

bool CGAL::do_intersect | ( | const Polygon_with_holes_2< Kernel, Container > & | pgn1,
|  | const Polygon_with_holes_2< Kernel, Container > & | pgn2,
|  | const GpsTraits & | traits
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two polygons with holes intersect in their interior.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.
  traits | a traits object.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

Precondition
  `GpsTraits` must be a model of the concept `GeneralPolygonSetTraits_2`.

## ◆ do_intersect() [20/26]

template<typename Kernel , typename Container , typename UsePolylines >

bool CGAL::do_intersect | ( | const Polygon_with_holes_2< Kernel, Container > & | pgn1,
|  | const Polygon_with_holes_2< Kernel, Container > & | pgn2,
|  | UsePolylines | = `Tag_true()`
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

determines whether two polygons with holes intersect in their interior.

Template Parameters

  UsePolylines | determines whether the boundaries of `pgn1` and `pgn2` are treated as cyclic sequences of single ( \(x\)-monotone) segments or as a cyclic sequences of ( \(x\)-monotone) polylines. If substituted with `CGAL::Tag_true`, which is the default, `pgn1` and `pgn2` are converted to general polygon with holes , bounded by polylines before the operation is actually performed. If substituted with `CGAL::Tag_false`, `pgn1` and `pgn2` are used as is. Refer to Traits Selection for more information.

Parameters

  pgn1 | the 1st input polygon.
  pgn2 | the 2nd input polygon.

Returns
  `true` if `pgn1` and `pgn2` intersect in their interior and `false` otherwise.

## ◆ do_intersect() [21/26]

template<typename InputIterator >

bool CGAL::do_intersect | ( | InputIterator | begin,
|  | InputIterator | end
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

Given a range of polygons or a range of polygons with holes (resp.

a range of general polygons or a range of general polygons with holes) determines whether the open polygons (resp. general polygons) in the range have a common point.

Parameters

  begin | the first iterator of the input range. Its value type is either `Polygon_2` (resp. `General_polygon_2`) or `Polygon_with_holes_2` (resp. `General_polygon_with_holes_2`).
  end | the past-the-end iterator of the input range. Its value type is either `Polygon_2` (resp. `General_polygon_2`) or `Polygon_with_holes_2` (resp. `General_polygon_with_holes_2`).

Returns
  `true` if the pairwise intersections of all open polygons or polygons with holes (resp. general polygons or general polygons with holes) in the range [*begin,*end) overlap, and `false` otherwise.

## ◆ do_intersect() [22/26]

template<typename InputIterator , typename GpsTraits >

bool CGAL::do_intersect | ( | InputIterator | begin,
|  | InputIterator | end,
|  | const GpsTraits & | traits
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

Given a range of polygons or a range of polygons with holes (resp.

a range of general polygons or a range of general polygons with holes) determines whether the open polygons (resp. general polygons) in the range have a common point.

Parameters

  begin | the first iterator of the input range. Its value type is either `Polygon_2` (resp. `General_polygon_2`) or `Polygon_with_holes_2` (resp. `General_polygon_with_holes_2`).
  end | the past-the-end iterator of the input range. Its value type is either `Polygon_2` (resp. `General_polygon_2`) or `Polygon_with_holes_2` (resp. `General_polygon_with_holes_2`).
  traits | a traits object.

Returns
  `true` if the pairwise intersections of all open polygons or polygons with holes (resp. general polygons or general polygons with holes) in the range [*begin,*end) overlap, and `false` otherwise.

Precondition
  `GpsTraits` must be a model of the concept `GeneralPolygonSetTraits_2`.

## ◆ do_intersect() [23/26]

template<typename InputIterator , typename UsePolylines >

bool CGAL::do_intersect | ( | InputIterator | begin,
|  | InputIterator | end,
|  | UsePolylines | = `Tag_true()`
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

Given a range of polygons or a range of polygons with holes (resp.

a range of general polygons or a range of general polygons with holes) determines whether the open polygons (resp. general polygons) in the range have a common point.

Template Parameters

  UsePolylines | determines whether the boundaries of the polygons in the input range are treated as cyclic sequences of single ( \(x\)-monotone) segments or as a cyclic sequences of ( \(x\)-monotone) polylines. If substituted with `CGAL::Tag_true`, which is the default, the input polygons are converted to general polygon with holes , bounded by polylines before the operation is actually performed. If substituted with `CGAL::Tag_false`, `pgn1` and `pgn2` are used as is. Refer to Traits Selection for more information.

Parameters

  begin | the first iterator of the input range. Its value type is either `Polygon_2` (resp. `General_polygon_2`) or `Polygon_with_holes_2` (resp. `General_polygon_with_holes_2`).
  end | the past-the-end iterator of the input range. Its value type is either `Polygon_2` (resp. `General_polygon_2`) or `Polygon_with_holes_2` (resp. `General_polygon_with_holes_2`).

Returns
  `true` if the pairwise intersections of all open polygons or polygons with holes (resp. general polygons or general polygons with holes) in the range [*begin,*end) overlap, and `false` otherwise.

## ◆ do_intersect() [24/26]

template<typename InputIterator1 , typename InputIterator2 >

bool CGAL::do_intersect | ( | InputIterator1 | begin1,
|  | InputIterator1 | end1,
|  | InputIterator2 | begin2,
|  | InputIterator2 | end2
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

Given a range of polygons (resp.

general polygons) and a range of polygons with holes (resp. general polygons with holes) determines whether the open polygons (resp. general polygons) in the two ranges have a common point.

Parameters

  begin1 | the first iterator of the 1st input range. Its value type is `Polygon_2` (resp. `General_polygon_2`).
  end1 | the past-the-end iterator of the 1st input range. Its value type is `Polygon_2` (resp. `General_polygon_2`).
  begin2 | the first iterator of the 2nd input range. Its value type is `Polygon_with_holes_2` (resp. `General_polygon_with_holes_2`).
  end2 | the past-the-end iterator of the 2nd input range. Its value type is `Polygon_with_holes_2` (resp. `General_polygon_with_holes_2`).

Returns
  `true` if the pairwise intersections of all open polygons (resp. general polygons) and polygons with holes (resp. general polygons with holes) in the ranges [*begin1,*end1) and [*begin2,*end2), respectively, overlap, and `false` otherwise.

## ◆ do_intersect() [25/26]

template<typename InputIterator1 , typename InputIterator2 , typename GpsTraits >

bool CGAL::do_intersect | ( | InputIterator1 | begin1,
|  | InputIterator1 | end1,
|  | InputIterator2 | begin2,
|  | InputIterator2 | end2,
|  | const GpsTraits & | traits
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

Given a range of polygons (resp.

general polygons) and a range of polygons with holes (resp. general polygons with holes) determines whether the open polygons (resp. general polygons) in the two ranges have a common point.

Parameters

  begin1 | the first iterator of the 1st input range. Its value type is `Polygon_2` (resp. `General_polygon_2`).
  end1 | the past-the-end iterator of the 1st input range. Its value type is `Polygon_2` (resp. `General_polygon_2`).
  begin2 | the first iterator of the 2nd input range. Its value type is `Polygon_with_holes_2` (resp. `General_polygon_with_holes_2`).
  end2 | the past-the-end iterator of the 2nd input range. Its value type is `Polygon_with_holes_2` (resp. `General_polygon_with_holes_2`).
  traits | a traits object.

Returns
  `true` if the pairwise intersections of all open polygons (resp. general polygons) and polygons with holes (resp. general polygons with holes) in the ranges [*begin1,*end1) and [*begin2,*end2), respectively, overlap, and `false` otherwise.

## ◆ do_intersect() [26/26]

template<typename InputIterator1 , typename InputIterator2 , typename UsePolylines >

bool CGAL::do_intersect | ( | InputIterator1 | begin1,
|  | InputIterator1 | end1,
|  | InputIterator2 | begin2,
|  | InputIterator2 | end2,
|  | UsePolylines | = `Tag_true()`
| ) |  |

`#include <CGAL/Boolean_set_operations_2.h>`

Given a range of polygons (resp.

general polygons) and a range of polygons with holes (resp. general polygons with holes) determines whether the open polygons (resp. general polygons) in the two ranges have a common point.

Template Parameters

  UsePolylines | determines whether the boundaries of the polygons in the input ranges are treated as cyclic sequences of single ( \(x\)-monotone) segments or as a cyclic sequences of ( \(x\)-monotone) polylines. If substituted with `CGAL::Tag_true`, which is the default, the input polygons are converted to general polygon with holes , bounded by polylines before the operation is actually performed. If substituted with `CGAL::Tag_false`, `pgn1` and `pgn2` are used as is. Refer to Traits Selection for more information.

Parameters

  begin1 | the first iterator of the 1st input range. Its value type is `Polygon_2` (resp. `General_polygon_2`).
  end1 | the past-the-end iterator of the 1st input range. Its value type is `Polygon_2` (resp. `General_polygon_2`).
  begin2 | the first iterator of the 2nd input range. Its value type is `Polygon_with_holes_2` (resp. `General_polygon_with_holes_2`).
  end2 | the past-the-end iterator of the 2nd input range. Its value type is `Polygon_with_holes_2` (resp. `General_polygon_with_holes_2`).

Returns
  `true` if the pairwise intersections of all open polygons (resp. general polygons) and polygons with holes (resp. general polygons with holes) in the ranges [*begin1,*end1) and [*begin2,*end2), respectively, overlap, and `false` otherwise.