Skip to Content.
Sympa Menu

cgal-discuss - [cgal-discuss] Simple Polygon Difference Results in Non-Simple Polygon

Subject: CGAL users discussion list

List archive

[cgal-discuss] Simple Polygon Difference Results in Non-Simple Polygon


Chronological Thread 
  • From: Bryant <>
  • To:
  • Subject: [cgal-discuss] Simple Polygon Difference Results in Non-Simple Polygon
  • Date: Tue, 19 Feb 2019 22:16:51 -0600 (CST)
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=SoftFail ; spf=Pass
  • Ironport-phdr: 9a23:qTlqPBc1xTKW9T7ZDEYMQIkDlGMj4u6mDksu8pMizoh2WeGdxcu6YB7h7PlgxGXEQZ/co6odzbaO4+a4ASQp2tWoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7Ovr6GpLIj8Swyuu+54Dfbx9HiTahYr5+Ngm6oRnMvcQKnIVuLbo8xAHUqXVSYeRWwm1oJVOXnxni48q74YBu/SdNtf8/7sBMSar1cbg2QrxeFzQmLns65Nb3uhnZTAuA/WUTX2MLmRdVGQfF7RX6XpDssivms+d2xSeXMdHqQb0yRD+v6bpgRh31hycdLzM3/mHZhNJzgqxGrx2uuxNxzpXIYIyXKPZyYr/Rcc8ESWdHQ81fVzZBAoS5b4YXEucBJ+ZZoJP7p1sSsBCzAhKjBPnvyzBSgH/2wbE10/k7EQHa2wwtBN0OsHHOo9X0MKceS/y6zK7NzTjaaf5dxDnz6I/Nch87oPGMW6p9cczLxkY0DAzFikufpZb5MDOS0+QAtXWQ4el4Ve+3lmIqrwV8riKhy8ovkIXEhYMYxkrF+Ch4xos+OMe2R1RhYdG+FZtdryGaOJVyQsMlW2xovik3xqcAuZGhZycF05AnyADFZ/ObdIiI5wrvVOeXIThmmHJoYK+zihK2/ES6xODxVdO43VVLoyZfk9TBt2gB1xnJ5ciGTvt98F2h2TGK1w3L8e5EO0A1mrDdK5493rEwi4ATsVjEHiLtl0X2ibWZdkQg+uSy9+vnZbDmqoeGN4BokgH+LrgumsunDOskPQgBRWyb9f2h273i5k32XKhKjuYtkqTCq5DbJcEbprajDANP04Yj7Qy/Dza839gCk3kHNgENRBXShIfgPxTCIevzEOykq1WqijZigf7cbZP7BZCYBGLSmbH9NeJ38V9VzhY40MpD4LpbD7gAJLT4XUqn54+QNQMwLwHhm7WvM956zI5LATveUJ/cC7vbtBqz3sxqJuCNYIEPvzOkcqoq4vfviTkynlpPJvD1j6tSU2ixG7FdG2vceWDl245THmIDvw54R+vv2gXbDGxjIk2qVqd53QkVTYKrCYCaG9Kr3PqH1S2xGpAQbWdDWAmB

When taking the difference between a /simple/ Polygon_set_2 and a /simple/
Polygon_2, the result may be non-simple. This appears to occur when one
would expect the difference to result in two polygons with holes that share
a point.

I use the following definitions:
- A Polygon_set_2 is simple if the Polygon_with_holes_2s composing it are
simple.
- A Polygon_with_holes_2 is simple if its outer boundary and holes are
simple.

Here's a minimum working example:
CGAL::Polygon_2<K> poly1;
poly1.push_back(CGAL::Point_2<K>(0, 0));
poly1.push_back(CGAL::Point_2<K>(2, 0));
poly1.push_back(CGAL::Point_2<K>(2, 1));
poly1.push_back(CGAL::Point_2<K>(1, 1));
poly1.push_back(CGAL::Point_2<K>(1, 2));
poly1.push_back(CGAL::Point_2<K>(0, 2));
CGAL::Polygon_set_2<K> poly_set(poly1);

CGAL::Polygon_2<K> hole;
hole.push_back(CGAL::Point_2<K>(0, 0));
hole.push_back(CGAL::Point_2<K>(1, 0));
hole.push_back(CGAL::Point_2<K>(1, 1));
hole.push_back(CGAL::Point_2<K>(0, 1));

poly_set.difference(hole);

Note: I have only tested with the EPEC Kernel.

The above code results in poly_set containing the following polygon:
(0, 1), (1, 1), (1, 0), (2, 0), (2, 1), (1, 1), (1, 2), (0, 2)

I would expect it to contain the following polygons:
(1, 0), (2, 0), (2, 1), (1, 1)
and
(0, 1), (1, 1), (1, 2), (0, 2)




--
Sent from: http://cgal-discuss.949826.n4.nabble.com/



Archive powered by MHonArc 2.6.18.

Top of Page