mirror of https://github.com/CGAL/cgal
Minkowski sum using BSO
This commit is contained in:
parent
8c8b61a04d
commit
836a1b19f9
|
|
@ -21,6 +21,11 @@
|
||||||
|
|
||||||
#include <CGAL/basic.h>
|
#include <CGAL/basic.h>
|
||||||
#include <CGAL/Polygon_with_holes_2.h>
|
#include <CGAL/Polygon_with_holes_2.h>
|
||||||
|
|
||||||
|
#include <CGAL/Boolean_set_operations_2.h>
|
||||||
|
#include <CGAL/General_polygon_set_2.h>
|
||||||
|
#include <CGAL/Gps_segment_traits_2.h>
|
||||||
|
|
||||||
#include <CGAL/Minkowski_sum_2/Minkowski_sum_conv_2.h>
|
#include <CGAL/Minkowski_sum_2/Minkowski_sum_conv_2.h>
|
||||||
#include <CGAL/Minkowski_sum_2/Minkowski_sum_decomp_2.h>
|
#include <CGAL/Minkowski_sum_2/Minkowski_sum_decomp_2.h>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
@ -75,14 +80,27 @@ minkowski_sum_2 (const Polygon_2<Kernel,Container>& pgn1,
|
||||||
const DecompositionStrategy&)
|
const DecompositionStrategy&)
|
||||||
{
|
{
|
||||||
Minkowski_sum_by_decomposition_2<DecompositionStrategy> mink_sum;
|
Minkowski_sum_by_decomposition_2<DecompositionStrategy> mink_sum;
|
||||||
Polygon_2<Kernel,Container> sum_bound;
|
std::list<Polygon_2<Kernel,Container> > sub_sum_polygons;
|
||||||
std::list<Polygon_2<Kernel,Container> > sum_holes;
|
|
||||||
|
|
||||||
mink_sum (pgn1, pgn2, sum_bound, std::back_inserter(sum_holes));
|
typedef typename Kernel::Point_2 Point_2;
|
||||||
|
typedef CGAL::Arr_segment_traits_2<Kernel> Arr_segment_traits;
|
||||||
|
typedef CGAL::Gps_segment_traits_2<Kernel,Container,Arr_segment_traits> Traits_2;
|
||||||
|
typedef CGAL::General_polygon_set_2<Traits_2> General_polygon_set_2;
|
||||||
|
typedef Polygon_with_holes_2<Kernel,Container> Polygon_with_holes_2;
|
||||||
|
typedef std::list<Polygon_with_holes_2> Polygon_with_holes_list;
|
||||||
|
|
||||||
return (Polygon_with_holes_2<Kernel,Container> (sum_bound,
|
|
||||||
sum_holes.begin(),
|
mink_sum (pgn1, pgn2, std::back_inserter(sub_sum_polygons));
|
||||||
sum_holes.end()));
|
|
||||||
|
General_polygon_set_2 gps;
|
||||||
|
|
||||||
|
gps.join(sub_sum_polygons.begin(),sub_sum_polygons.end());
|
||||||
|
|
||||||
|
Polygon_with_holes_list sum;
|
||||||
|
|
||||||
|
gps.polygons_with_holes(std::back_inserter(sum));
|
||||||
|
|
||||||
|
return (*(sum.begin()));
|
||||||
}
|
}
|
||||||
|
|
||||||
} //namespace CGAL
|
} //namespace CGAL
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue