#include //CGAL definitions that need to be before anything else #include #include #include #include #include #include #include #include #include #include #include #include #include #include //used for visualization - typedef CGAL::Quotient NT; typedef CGAL::Cartesian R; typedef CGAL::Arr_segment_exact_traits Traits; typedef Traits::Point Point; typedef Traits::X_curve X_curve; typedef Traits::Curve Curve; typedef CGAL::Bop_default_dcel Dcel; typedef CGAL::Planar_map_2 Planar_map; typedef CGAL::Map_overlay MapOverlay; typedef CGAL::Boolean_operations 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 namespace std; int main() { Planar_map pm1, pm2; int num_curves1, num_curves2; NT x1, y1, x2, y2; std::cin >> num_curves1; std::vector curves; while (num_curves1--) { std::cin >> x1 >> y1 >> x2 >> y2; curves.push_back(X_curve(Point(x1,y1), Point(x2,y2))); } Traits traits; CGAL::sweep_to_construct_planar_map_2(curves.begin(), curves.end(), traits, pm1); curves.clear(); std::cin >> num_curves2; while (num_curves2--) { std::cin >> x1 >> y1 >> x2 >> y2; curves.push_back(X_curve(Point(x1,y1), Point(x2,y2))); } CGAL::sweep_to_construct_planar_map_2(curves.begin(), curves.end(), traits, pm2); // ignoring unbounded face in boolean operations. pm1.unbounded_face()->set_ignore_bop(false); pm2.unbounded_face()->set_ignore_bop(false); std::cout<<"Creating a boolean-operation object"<curve(); } return 0; }