Minkowski sum using BSO

This commit is contained in:
Sandhyaa Radhakrishnan 2011-08-11 20:16:47 +00:00
parent 8c8b61a04d
commit 836a1b19f9
1 changed files with 25 additions and 7 deletions

View File

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