From 21e4fca8ab80978ab26ca17b1dfd4e033fe0430f Mon Sep 17 00:00:00 2001 From: Ester Ezra Date: Thu, 3 Oct 2002 12:36:11 +0000 Subject: [PATCH] The example demonstrating the usage in the function sweep_to_report_intersecting_curves_2. --- .../examples/Sweep_line_2/example7.C | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 Packages/Sweep_line_2/examples/Sweep_line_2/example7.C diff --git a/Packages/Sweep_line_2/examples/Sweep_line_2/example7.C b/Packages/Sweep_line_2/examples/Sweep_line_2/example7.C new file mode 100644 index 00000000000..042079e5acc --- /dev/null +++ b/Packages/Sweep_line_2/examples/Sweep_line_2/example7.C @@ -0,0 +1,82 @@ +// examples/Sweep_line/example5.C +// ------------------------------ + +#if defined(CGAL_CFG_NO_LONGNAME_PROBLEM) || defined(_MSC_VER) +#define Quotient Qt +#define Cartesian Cn +#define Arr_segment_exact_traits AST +#define Pm_default_dcel PmDD +#define X_curve_plus_id XCPI +#define allocator All +#define Sweep_curves_to_subcurves_utils SCSU +#define Sweep_curves_base_2 SCB +#define Intersection_point_node IPN +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef CGAL::Quotient NT; +typedef CGAL::Cartesian Kernel; +typedef CGAL::Arr_segment_exact_traits Traits; + +typedef Traits::Point_2 Point_2; +typedef Traits::Curve_2 Curve_2; +typedef Traits::X_curve_2 X_curve_2; + +typedef CGAL::Pm_default_dcel Dcel; +typedef CGAL::Planar_map_2 PM; + +typedef std::pair > Pair_point_curves; + +int main() +{ + PM pm; + int num_segments; + std::vector segments; + + std::cout << " * * * Demonstrating a trivial usage of the sweep line "; + std::cout << "algorithm" << std::endl << std::endl; + + // Read input + std::cin >> num_segments; + + while (num_segments--) + { + Curve_2 cv; + std::cin >> cv; + segments.push_back(cv); + } + + // Use a sweep to find the points induced in the arrangement + std::vector intersecting_curves; + Traits traits; + CGAL::sweep_to_report_intersecting_curves_2(segments.begin(), + segments.end(), + traits, + std::back_inserter(intersecting_curves)); + + // Write output + std::cout << " * * * Printing list of all points and their corresponding curves meeting at that point"<::iterator + p_iter = intersecting_curves.begin(); + p_iter != intersecting_curves.end(); ++p_iter) + { + std::cout<<"The curves"<< std::endl; + for (std::list::iterator cv_iter = (p_iter->second).begin(); + cv_iter != (p_iter->second).end(); ++cv_iter) + std::cout<< *cv_iter << std::endl; + std::cout<<"Intersect in "<< p_iter->first << std::endl; + } + + return 0; +}