//#define CGAL_INTERSECTION_MAP_FOR_SUPPORTING_CIRCLES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // CIRCULAR KERNEL TYPEDEFS //typedef CGAL::MP_Float RT; //typedef CGAL::Quotient NT1; typedef CGAL::Gmpz RT; typedef CGAL::Gmpq NT1; typedef CGAL::Cartesian Linear_k1; typedef CGAL::Algebraic_kernel_for_circles_2_2 Algebraic_k1; typedef CGAL::Circular_kernel_2 CircularKernel; typedef CGAL::Arr_circular_arc_traits_2 CircularK_CA_Traits; typedef CircularKernel::Circular_arc_2 CircularKArc; typedef std::vector CircularKArcContainer; typedef CircularKernel::Circular_arc_2 Circular_arc_2; typedef CircularKernel::Line_arc_2 Line_arc_2; typedef CGAL::Arr_circular_line_arc_traits_2 CircularK_Variant_Traits; typedef boost::variant< Circular_arc_2, Line_arc_2 > CircularKVarArc; typedef std::vector CircularKVarArcContainer; // BBOX TYPEDEFS typedef CGAL::Filtered_bbox_circular_kernel_2 BBCircularKernel ; typedef CGAL::Arr_circular_arc_traits_2 BBCircularKernel_CA_Traits; typedef BBCircularKernel::Circular_arc_2 BBCircularKernelArc; typedef std::vector BBCircularKernelArcContainer; typedef BBCircularKernel::Circular_arc_2 Circular_arc_6; typedef BBCircularKernel::Line_arc_2 Line_arc_6; typedef boost::variant BBCircVarArc; typedef std::vector BBCircVarContainer; typedef CGAL::Arr_circular_line_arc_traits_2 BBCircVariantTraits; template void do_main(const char *s) { // TYPEDEFS typedef typename CK::Circular_arc_2 C2; typedef typename CK::Line_arc_2 L2; typedef typename CGAL::Arrangement_2 Pmwx; typedef typename CGAL::Arr_naive_point_location Point_location; // LOADING CURVES ArcContainer ac; std::ifstream fin; fin.open (s); CGAL::variant_load( fin, std::back_inserter(ac)); fin.close(); std::cout << "Size:" << ac.size() << std::endl; // BENCHMARKING Pmwx _pm; Point_location _pl(_pm); struct rusage before, after; struct timeval utime, stime; getrusage(RUSAGE_SELF,&before); insert(_pm,ac.begin(),ac.end(),std::false_type()); getrusage(RUSAGE_SELF,&after); timersub(&(after.ru_utime),&(before.ru_utime),&utime); timersub(&(after.ru_stime),&(before.ru_stime),&stime); std::cout<<"Time="<< utime.tv_sec<<"."<< std::setw(6) << std::setfill('0')<< utime.tv_usec <= 0 && j < 9)) { if(i == 1) do_main(dxf_filename[j]); if(i == 3) do_main(dxf_filename[j]); if((i >= 5) || (i <= 0)) std::cout << "INVALID PARAMETERS" << std::endl; } else { int k = -1; if(j == 9) k = 0; if(j == ('a'-'0')) k = 1; if(j == ('b'-'0')) k = 2; if(j == ('c'-'0')) k = 3; if(j == ('d'-'0')) k = 4; if(i == 1) do_main(k); if(i == 3) do_main(k); if(i == 5) do_main(k); if(i == 7) do_main(k); } } else std::cout << "INVALID PARAMETERS" << std::endl; return 0; }