Boost logo

Geometry :

Subject: [ggl] Difference / xor for multi polygons
From: Javier Gonzalez (xaviergonz)
Date: 2011-02-26 13:56:37

I have some test code like this:

  typedef point<double, 2, cs::cartesian> point_2d;
  typedef polygon<point_2d> polygon_2d;
  typedef vector<polygon_2d> polygon_2d_list;

  enum clip_type

  class Helper
    static polygon_2d_list Combine(polygon_2d_list subjectPoly,
polygon_2d_list clipPoly, clip_type clipType)
      polygon_2d_list outputPoly;

      if (clipType == clip_type_intersection)
        intersection_inserter<polygon_2d>(subjectPoly, clipPoly,
      else if (clipType == clip_type_union)
        union_inserter<polygon_2d>(subjectPoly, clipPoly,
      else if (clipType == clip_type_difference)
        difference_inserter<polygon_2d>(subjectPoly, clipPoly,
back_inserter(outputPoly)); // ??? does not compile
      else // xor
        sym_difference_inserter<polygon_2d>(subjectPoly, clipPoly,
back_inserter(outputPoly)); // ??? does not compile

      return outputPoly;

But there seems to be no multi algorithms for difference and sym difference
I'm trying to get a behaivour like GPC.

Any idea on what would be the right approach?

PS: I'm assuming a multi_polygon is needed for example for two separated
"donuts" (two separated polygons with an outer ring and an inner ring each)
Do I really need to use multi polygons or would a simple polygon be able to
hold both figures?

-------------- next part --------------
An HTML attachment was scrubbed...

Geometry list run by mateusz at