diff --git a/include/boost/geometry/algorithms/detail/overlay/get_turns.hpp b/include/boost/geometry/algorithms/detail/overlay/get_turns.hpp index 18d0ae472..5740a8b7b 100644 --- a/include/boost/geometry/algorithms/detail/overlay/get_turns.hpp +++ b/include/boost/geometry/algorithms/detail/overlay/get_turns.hpp @@ -158,6 +158,7 @@ public : static inline bool apply( int source_id1, Geometry1 const& geometry1, Section1 const& sec1, int source_id2, Geometry2 const& geometry2, Section2 const& sec2, + bool skip_larger, Turns& turns, InterruptPolicy& interrupt_policy) { @@ -229,7 +230,7 @@ public : // Also skip if index1 < index2 to avoid getting all // intersections twice (only do this on same source!) - skip = index1 >= index2 + skip = (skip_larger && index1 >= index2) || ndi2 == ndi1 + 1 || neighbouring(sec1, index1, index2) ; @@ -405,6 +406,7 @@ struct section_visitor >::apply( m_source_id1, m_geometry1, sec1, m_source_id2, m_geometry2, sec2, + false, m_turns, m_interrupt_policy); } return true; diff --git a/include/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp b/include/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp index b7dd914a2..9c4c99394 100644 --- a/include/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp +++ b/include/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp @@ -87,6 +87,7 @@ struct self_section_visitor >::apply( 0, m_geometry, sec1, 0, m_geometry, sec2, + false, m_turns, m_interrupt_policy); } if (m_interrupt_policy.has_intersections)