Fixed the text and added missing intersection functions

This commit is contained in:
Efi Fogel 2021-03-04 01:08:37 +02:00
parent f0c722a713
commit 2cd13748c1
3 changed files with 228 additions and 16 deletions

View File

@ -311,7 +311,7 @@ OutputIterator intersection(const General_polygon_with_holes_2<Polygon>& pgn1,
OutputIterator oi); OutputIterator oi);
/*! Given a range of polygons (resp. general polygons) or a range of general /*! Given a range of polygons (resp. general polygons) or a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* intersection of all polygons in the range and inserts the resulting polygons * intersection of all polygons in the range and inserts the resulting polygons
* with holes (resp. general polygons with holes) into a container via an output * with holes (resp. general polygons with holes) into a container via an output
@ -331,7 +331,7 @@ template <typename InputIterator, typename OutputIterator>
OutputIterator intersection(InputIterator begin, InputIterator end, OutputIterator intersection(InputIterator begin, InputIterator end,
OutputIterator oi); OutputIterator oi);
/*! Given a range of polygons (resp. general polygons) or a range of general /*! Given a range of polygons (resp. general polygons) or a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* intersection of all polygons in the range and inserts the resulting polygons * intersection of all polygons in the range and inserts the resulting polygons
* with holes (resp. general polygons with holes) into a container via an output * with holes (resp. general polygons with holes) into a container via an output
@ -363,7 +363,7 @@ OutputIterator intersection(InputIterator begin, InputIterator end,
OutputIterator oi, OutputIterator oi,
UsePolylines = Tag_true()); UsePolylines = Tag_true());
/*! Given a range of polygons (resp. general polygons) and a range of general /*! Given a range of polygons (resp. general polygons) and a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* intersection of all polygons in the two ranges and inserts the resulting * intersection of all polygons in the two ranges and inserts the resulting
* polygons with holes (resp. general polygons with holes) into a container via * polygons with holes (resp. general polygons with holes) into a container via
@ -387,7 +387,7 @@ OutputIterator intersection(InputIterator1 begin1, InputIterator1 end1,
InputIterator2 begin2, InputIterator2 end2, InputIterator2 begin2, InputIterator2 end2,
OutputIterator oi); OutputIterator oi);
/*! Given a range of polygons (resp. general polygons) and a range of general /*! Given a range of polygons (resp. general polygons) and a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* intersection of all polygons in the two ranges and inserts the resulting * intersection of all polygons in the two ranges and inserts the resulting
* polygons with holes (resp. general polygons with holes) into a container via * polygons with holes (resp. general polygons with holes) into a container via
@ -422,6 +422,218 @@ OutputIterator intersection(InputIterator1 begin1, InputIterator1 end1,
OutputIterator oi, OutputIterator oi,
UsePolylines = Tag_true()); UsePolylines = Tag_true());
//////// With Traits
/*! computes the intersection between two polygons and inserts the
* resulting polygons with holes into a container via an output iterator.
* \param pgn1 the 1st input polygon.
* \param pgn2 the 2nd input polygon.
* \param oi the output iterator for the result.
* Its dereference type must be convertible to
* `Polygon_with_holes_2<Kernel, Container>`.
* \param traits a traits object.
* \return the past-the-end iterator of the output container.
* \pre GpsTraits must be a model of `GeneralPolygonSetTraits_2`.
*/
template <typename Kernel, typename Container, typename OutputIterator,
typename GpsTraits>
OutputIterator intersection(const Polygon_2<Kernel, Container>& pgn1,
const Polygon_2<Kernel, Container>& pgn2,
OutputIterator oi,
const GpsTraits& traits);
/*! computes the intersection between two polygons and inserts the
* resulting polygons with holes into a container via an output iterator.
* \param pgn1 the 1st input polygon.
* \param pgn2 the 2nd input polygon.
* \param oi the output iterator for the result.
* Its dereference type must be convertible to
* `Polygon_with_holes_2<Kernel, Container>`.
* \param traits a traits object.
* \return the past-the-end iterator of the output container.
* \pre GpsTraits must be a model of `GeneralPolygonSetTraits_2`.
*/
template <typename Kernel, typename Container, typename OutputIterator,
typename GpsTraits>
OutputIterator
intersection(const Polygon_2<Kernel, Container>& pgn1,
const Polygon_with_holes_2<Kernel, Container>& pgn2,
OutputIterator oi,
const GpsTraits& traits);
/*! computes the intersection between two polygons and inserts the
* resulting polygons with holes into a container via an output iterator.
* \param pgn1 the 1st input polygon.
* \param pgn2 the 2nd input polygon.
* \param oi the output iterator for the result.
* Its dereference type must be convertible to
* `Polygon_with_holes_2<Kernel, Container>`.
* \param traits a traits object.
* \return the past-the-end iterator of the output container.
* \pre GpsTraits must be a model of `GeneralPolygonSetTraits_2`.
*/
template <typename Kernel, typename Container, typename OutputIterator,
typename GpsTraits>
OutputIterator
intersection(const Polygon_with_holes_2<Kernel, Container>& pgn1,
const Polygon_2<Kernel, Container>& pgn2,
OutputIterator oi,
const GpsTraits& traits);
/*! computes the intersection between two polygons with holes and
* inserts the resulting polygons with holes into a container via an output
* iterator.
* \param pgn1 the 1st input polygon.
* \param pgn2 the 2nd input polygon.
* \param oi the output iterator for the result.
* Its dereference type must be convertible to
* `Polygon_with_holes_2<Kernel, Container>`.
* \param traits a traits object.
* \return the past-the-end iterator of the output container.
* \pre GpsTraits must be a model of `GeneralPolygonSetTraits_2`.
*/
template <typename Kernel, typename Container, typename OutputIterator,
typename GpsTraits>
OutputIterator
intersection(const Polygon_with_holes_2<Kernel, Container>& pgn1,
const Polygon_with_holes_2<Kernel, Container>& pgn2,
OutputIterator oi,
const GpsTraits& traits);
/*! computes the intersection between two general polygons and inserts
* the resulting general polygons with holes into a container via an output
* iterator.
* \param pgn1 the 1st input polygon.
* \param pgn2 the 2nd input polygon.
* \param oi the output iterator for the result.
* Its dereference type must be convertible to
* `General_polygon_with_holes_2<General_polygon_2<ArrTraits>>`.
* \param traits a traits object.
* \return the past-the-end iterator of the output container.
* \pre `%ArrTraits` must be a model of the concept
* `ArrangementDirectionalXMonotoneTraits_2`.
* \pre GpsTraits must be a model of `GeneralPolygonSetTraits_2`.
*/
template <typename ArrTraits, typename OutputIterator, typename GpsTraits>
OutputIterator intersection(const General_polygon_2<ArrTraits>& pgn1,
const General_polygon_2<ArrTraits>& pgn2,
OutputIterator oi,
const GpsTraits& traits);
/*! computes the intersection between two general polygons and inserts
* the resulting general polygons with holes into a container via an output
* iterator.
* \param pgn1 the 1st input polygon.
* \param pgn2 the 2nd input polygon.
* \param oi the output iterator for the result.
* Its dereference type must be convertible to
* `General_polygon_with_holes_2<General_polygon_2<ArrTraits>>`.
* \param traits a traits object.
* \return the past-the-end iterator of the output container.
* \pre `%ArrTraits` must be a model of the concept
* `ArrangementDirectionalXMonotoneTraits_2`.
* \pre GpsTraits must be a model of `GeneralPolygonSetTraits_2`.
*/
template <typename ArrTraits, typename OutputIterator, typename GpsTraits>
OutputIterator
intersection(const General_polygon_with_holes_2<General_polygon_2<ArrTraits>>& pgn1,
const General_polygon_2<ArrTraits>& pgn2,
OutputIterator oi,
const GpsTraits& traits);
/*! computes the intersection between two general polygons and inserts
* the resulting general polygons with holes into a container via an output
* iterator.
* \param pgn1 the 1st input polygon.
* \param pgn2 the 2nd input polygon.
* \param oi the output iterator for the result.
* Its dereference type must be convertible to
* `General_polygon_with_holes_2<General_polygon_2<ArrTraits>>`.
* \param traits a traits object.
* \return the past-the-end iterator of the output container.
* \pre `%ArrTraits` must be a model of the concept
* `ArrangementDirectionalXMonotoneTraits_2`.
* \pre GpsTraits must be a model of `GeneralPolygonSetTraits_2`.
*/
template <typename ArrTraits, typename OutputIterator, typename GpsTraits>
OutputIterator
intersection(const General_polygon_2<ArrTraits>& pgn1,
const General_polygon_with_holes_2<General_polygon_2<ArrTraits>>& pgn2,
OutputIterator oi,
const GpsTraits& traits);
/*! computes the intersection between two general polygons and inserts
* the resulting general polygons with holes into a container via an output
* iterator.
* \param pgn1 the 1st input polygon.
* \param pgn2 the 2nd input polygon.
* \param oi the output iterator for the result.
* Its dereference type must be convertible to
* `General_polygon_with_holes_2<Polygon>`.
* \param traits a traits object.
* \return the past-the-end iterator of the output container.
* \pre GpsTraits must be a model of `GeneralPolygonSetTraits_2`.
*/
template <typename Polygon, typename OutputIterator, typename GpsTraits>
OutputIterator
intersection(const General_polygon_with_holes_2<Polygon>& pgn1,
const General_polygon_with_holes_2<Polygon>& pgn2,
OutputIterator oi,
const GpsTraits& traits);
/*! Given a range of polygons (resp. general polygons) or a range of
* polygons with holes (resp. general polygons with holes) computes the
* intersection of all polygons in the range and inserts the resulting
* polygons with holes (resp. general polygons with holes) into a container via
* an output iterator.
* \param 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`).
* \param 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`).
* \param oi the output iterator for the result.
* Its dereference type must be convertible to
* `Polygon_with_holes_2` (resp. `General_polygons_with_holes_2`).
* \param traits a traits object.
* \return the past-the-end iterator of the output container.
* \pre GpsTraits must be a model of `GeneralPolygonSetTraits_2`.
*/
template <typename InputIterator, typename OutputIterator, typename GpsTraits>
OutputIterator intersection(InputIterator begin, InputIterator end,
OutputIterator oi,
const GpsTraits& traits);
/*! Given a range of polygons (resp. general polygons) and a range of
* polygons with holes (resp. general polygons with holes) computes the
* intersection between all polygons in the two ranges and inserts the
* resulting polygons with holes (resp. general polygons with holes) into a
* container via an output iterator.
* \param begin1 the first iterator of the 1st input range. Its value type is
* `Polygon_2` (resp. `General_polygon_2`).
* \param end1 the past-the-end iterator of the 1st input range. Its value
* type is `Polygon_2` (resp. `General_polygon_2`).
* \param begin2 the first iterator of the 2nd input range. Its value type
* is `Polygon_with_holes_2` (resp. `General_polygon_with_holes_2`).
* \param 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`).
* \param oi the output iterator for the result.
* Its dereference type must be convertible to
* `Polygon_with_holes_2` (resp. `General_polygons_with_holes_2`).
* \param traits a traits object.
* \return the past-the-end iterator of the output container.
* \pre GpsTraits must be a model of `GeneralPolygonSetTraits_2`.
*/
template <typename InputIterator1, typename InputIterator2,
typename OutputIterator, typename GpsTraits>
OutputIterator intersection(InputIterator1 begin1, InputIterator1 end1,
InputIterator2 begin2, InputIterator2 end2,
OutputIterator oi,
const GpsTraits& traits);
/// @} /// @}
} /* namespace CGAL */ } /* namespace CGAL */

View File

@ -271,7 +271,7 @@ bool join(const General_polygon_with_holes_2<Polygon>& pgn1,
const General_polygon_with_holes_2<Polygon>& pgn2, const General_polygon_with_holes_2<Polygon>& pgn2,
General_polygon_with_holes_2<Polygon>& res); General_polygon_with_holes_2<Polygon>& res);
/*! Given a range of polygons (resp. general polygons) or a range of general /*! Given a range of polygons (resp. general polygons) or a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* union of all polygons in the range and inserts the resulting polygons * union of all polygons in the range and inserts the resulting polygons
* with holes (resp. general polygons with holes) into a container via an output * with holes (resp. general polygons with holes) into a container via an output
@ -291,7 +291,7 @@ template <typename InputIterator, typename OutputIterator>
OutputIterator join(InputIterator begin, InputIterator end, OutputIterator join(InputIterator begin, InputIterator end,
OutputIterator oi); OutputIterator oi);
/*! Given a range of polygons (resp. general polygons) or a range of general /*! Given a range of polygons (resp. general polygons) or a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* union of all polygons in the range and inserts the resulting polygons * union of all polygons in the range and inserts the resulting polygons
* with holes (resp. general polygons with holes) into a container via an output * with holes (resp. general polygons with holes) into a container via an output
@ -323,7 +323,7 @@ OutputIterator join(InputIterator begin, InputIterator end,
OutputIterator oi, OutputIterator oi,
UsePolylines = Tag_true()); UsePolylines = Tag_true());
/*! Given a range of polygons (resp. general polygons) and a range of general /*! Given a range of polygons (resp. general polygons) and a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* union of all polygons in the two ranges and inserts the resulting * union of all polygons in the two ranges and inserts the resulting
* polygons with holes (resp. general polygons with holes) into a container via * polygons with holes (resp. general polygons with holes) into a container via
@ -475,7 +475,7 @@ bool join(const General_polygon_with_holes_2<Polygon>& pgn1,
General_polygon_with_holes_2<Polygon>& res, General_polygon_with_holes_2<Polygon>& res,
const GpsTraits& traits); const GpsTraits& traits);
/*! Given a range of polygons (resp. general polygons) or a range of general /*! Given a range of polygons (resp. general polygons) or a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* union of all polygons in the range and inserts the resulting polygons * union of all polygons in the range and inserts the resulting polygons
* with holes (resp. general polygons with holes) into a container via an output * with holes (resp. general polygons with holes) into a container via an output
@ -498,7 +498,7 @@ OutputIterator join(InputIterator begin, InputIterator end,
OutputIterator oi, OutputIterator oi,
const GpsTraits& traits); const GpsTraits& traits);
/*! Given a range of polygons (resp. general polygons) and a range of general /*! Given a range of polygons (resp. general polygons) and a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* union of all polygons in the two ranges and inserts the resulting * union of all polygons in the two ranges and inserts the resulting
* polygons with holes (resp. general polygons with holes) into a container via * polygons with holes (resp. general polygons with holes) into a container via
@ -525,7 +525,7 @@ OutputIterator join(InputIterator1 begin1, InputIterator1 end1,
OutputIterator oi, OutputIterator oi,
const GpsTraits& traits); const GpsTraits& traits);
/*! Given a range of polygons (resp. general polygons) and a range of general /*! Given a range of polygons (resp. general polygons) and a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* union of all polygons in the two ranges and inserts the resulting * union of all polygons in the two ranges and inserts the resulting
* polygons with holes (resp. general polygons with holes) into a container via * polygons with holes (resp. general polygons with holes) into a container via

View File

@ -328,7 +328,7 @@ symmetric_difference(const General_polygon_with_holes_2<Polygon>& pgn1,
const General_polygon_with_holes_2<Polygon>& pgn2, const General_polygon_with_holes_2<Polygon>& pgn2,
OutputIterator oi); OutputIterator oi);
/*! Given a range of polygons (resp. general polygons) or a range of general /*! Given a range of polygons (resp. general polygons) or a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* symmetric difference of all polygons in the range and inserts the resulting * symmetric difference of all polygons in the range and inserts the resulting
* polygons with holes (resp. general polygons with holes) into a container via * polygons with holes (resp. general polygons with holes) into a container via
@ -349,7 +349,7 @@ template <typename InputIterator, typename OutputIterator>
OutputIterator symmetric_difference(InputIterator begin, InputIterator end, OutputIterator symmetric_difference(InputIterator begin, InputIterator end,
OutputIterator oi); OutputIterator oi);
/*! Given a range of polygons (resp. general polygons) or a range of general /*! Given a range of polygons (resp. general polygons) or a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* symmetric difference of all polygons in the range and inserts the resulting * symmetric difference of all polygons in the range and inserts the resulting
* polygons with holes (resp. general polygons with holes) into a container via * polygons with holes (resp. general polygons with holes) into a container via
@ -382,7 +382,7 @@ OutputIterator symmetric_difference(InputIterator begin, InputIterator end,
OutputIterator oi, OutputIterator oi,
UsePolylines = Tag_true()); UsePolylines = Tag_true());
/*! Given a range of polygons (resp. general polygons) and a range of general /*! Given a range of polygons (resp. general polygons) and a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* symmetric difference between all polygons in the two ranges and inserts the * symmetric difference between all polygons in the two ranges and inserts the
* resulting polygons with holes (resp. general polygons with holes) into a * resulting polygons with holes (resp. general polygons with holes) into a
@ -408,7 +408,7 @@ OutputIterator symmetric_difference(InputIterator1 begin1, InputIterator1 end1,
InputIterator2 begin2, InputIterator2 end2, InputIterator2 begin2, InputIterator2 end2,
OutputIterator oi); OutputIterator oi);
/*! Given a range of polygons (resp. general polygons) and a range of general /*! Given a range of polygons (resp. general polygons) and a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* symmetric difference between all polygons in the two ranges and inserts the * symmetric difference between all polygons in the two ranges and inserts the
* resulting polygons with holes (resp. general polygons with holes) into a * resulting polygons with holes (resp. general polygons with holes) into a
@ -608,7 +608,7 @@ symmetric_difference(const General_polygon_with_holes_2<Polygon>& pgn1,
OutputIterator oi, OutputIterator oi,
const GpsTraits& traits); const GpsTraits& traits);
/*! Given a range of polygons (resp. general polygons) or a range of general /*! Given a range of polygons (resp. general polygons) or a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* symmetric difference of all polygons in the range and inserts the resulting * symmetric difference of all polygons in the range and inserts the resulting
* polygons with holes (resp. general polygons with holes) into a container via * polygons with holes (resp. general polygons with holes) into a container via
@ -632,7 +632,7 @@ OutputIterator symmetric_difference(InputIterator begin, InputIterator end,
OutputIterator oi, OutputIterator oi,
const GpsTraits& traits); const GpsTraits& traits);
/*! Given a range of polygons (resp. general polygons) and a range of general /*! Given a range of polygons (resp. general polygons) and a range of
* polygons with holes (resp. general polygons with holes) computes the * polygons with holes (resp. general polygons with holes) computes the
* symmetric difference between all polygons in the two ranges and inserts the * symmetric difference between all polygons in the two ranges and inserts the
* resulting polygons with holes (resp. general polygons with holes) into a * resulting polygons with holes (resp. general polygons with holes) into a