From 5007f1debba988a77d50659fe024c50ffd448e3c Mon Sep 17 00:00:00 2001 From: Barend Gehrels Date: Sat, 17 May 2014 21:09:07 +0200 Subject: [PATCH 1/2] [extensions][dissolve] repaired dissolve w.r.t. turn changes --- .../extensions/algorithms/detail/overlay/dissolver.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/include/boost/geometry/extensions/algorithms/detail/overlay/dissolver.hpp b/include/boost/geometry/extensions/algorithms/detail/overlay/dissolver.hpp index 7d36d6dd2..ac4fdb40c 100644 --- a/include/boost/geometry/extensions/algorithms/detail/overlay/dissolver.hpp +++ b/include/boost/geometry/extensions/algorithms/detail/overlay/dissolver.hpp @@ -125,7 +125,12 @@ class plusmin_policy //negative = true; typedef typename geometry::point_type::type point_type; - typedef overlay::turn_info turn_info; + + typedef overlay::turn_info + < + point_type, + typename segment_ratio_type::type + > turn_info; std::deque turns; // Get (and stop on) any intersection From dee255ad5e24aa71c4ae32ecb44b4994fabb440b Mon Sep 17 00:00:00 2001 From: Barend Gehrels Date: Sun, 18 May 2014 00:02:43 +0200 Subject: [PATCH 2/2] [extensions][dissolve] added extra unit tests for cw/ccw check --- extensions/test/algorithms/dissolve.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/extensions/test/algorithms/dissolve.cpp b/extensions/test/algorithms/dissolve.cpp index 46fae52d0..2c6da16d8 100644 --- a/extensions/test/algorithms/dissolve.cpp +++ b/extensions/test/algorithms/dissolve.cpp @@ -273,6 +273,13 @@ void test_all() "POLYGON((5 0,2.5 9,9.5 3.5,0.5 3.5,7.5 9,5 0))", 0, 11, 25.6158412); + // CCW polygons should turn CW after dissolve + test_one("cw", + "POLYGON((2 8,8 8,8 0,0 0,0 6,4 6,4 4,2 4,2 8))", + 0, 7, 60); + test_one("ccw", + "POLYGON((2 8,2 4,4 4,4 6,0 6,0 0,8 0,8 8,2 8))", + 0, 12, 64); // TODO: should have the same, 7, 60. The polygon is dissolved (splitted) but the extra polygon is still on top of the other // Multi-geometries {