bool do_intersect(const Polygon_2& P, const Polygon_2& Q) { // return CGAL::do_intersect(P, Q); if (boundaries_intersect(P, Q, true)) return true; return P.has_on_positive_side(Q[0]) || Q.has_on_positive_side(P[0]); }