#include //CGAL definitions that need to be before anything else #include #include #include #include #include #include #include #include #include #include #include #include // uncomment if LEDA is installed. //#include //used for visualization - //#include typedef CGAL::Quotient NT; typedef CGAL::Cartesian K; typedef CGAL::Arr_segment_traits_2 Traits; typedef Traits::Point_2 Point_2; typedef Traits::X_monotone_curve_2 X_monotone_curve_2; typedef Traits::Curve_2 Curve_2; typedef CGAL::Bop_default_dcel Dcel; typedef CGAL::Planar_map_2 Planar_map; typedef CGAL::Planar_map_with_intersections_2 Pmwx; typedef CGAL::Map_overlay_2 MapOverlay; typedef CGAL::Boolean_operations_2 Bops; typedef CGAL::Pm_walk_along_line_point_location PmWalkPL; typedef Bops::Faces_container Faces_container; typedef Bops::Halfedges_container Halfedges_container; typedef Bops::Vertices_container Vertices_container; using std::cin; using std::cout; using std::endl; int main() { Pmwx pm1, pm2; int num_curves1, num_curves2; NT x1, y1, x2, y2; cin >> num_curves1; std::vector curves; while (num_curves1--) { cin >> x1 >> y1 >> x2 >> y2; Point_2 p1(x1,y2), p2(x2,y2); curves.push_back(X_monotone_curve_2(p1, p2)); } pm1.insert(curves.begin(),curves.end()); curves.clear(); cin >> num_curves2; while (num_curves2--) { cin >> x1 >> y1 >> x2 >> y2; Point_2 p1(x1,y2), p2(x2,y2); curves.push_back(X_monotone_curve_2(p1, p2)); } pm2.insert(curves.begin(), curves.end()); // ignoring unbounded face in boolean operations. pm1.unbounded_face()->set_ignore_bop(false); pm2.unbounded_face()->set_ignore_bop(false); cout<<"Creating a boolean-operation object"<curve() << endl; // uncomment if LEDA is installed. //CGAL::Window_stream W(700, 700); //W.init(-10,10,-10); //W.set_node_width(3); //W.display(); //W<curve(); //} return 0; }