#include <list>
#include <fstream>
#include <chrono>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Arr_non_caching_segment_basic_traits_2.h>
#include <CGAL/Arrangement_2.h>
using Number_type = Kernel::FT;
using Segment_2 = Traits_2::X_monotone_curve_2;
int main(int argc, char* argv[]) {
const char* filename = (argc > 1) ? argv[1] : "Europe.dat";
std::ifstream in_file(filename);
if (! in_file.is_open()) {
std::cerr << "Failed to open " << filename << " ...\n";
return 1;
}
std::list<Segment_2> segments;
std::size_t n;
in_file >> n;
for (std::size_t i = 0; i < n; ++i) {
double sx, sy, tx, ty;
in_file >> sx >> sy >> tx >> ty;
Point_2 (Number_type(tx), Number_type(ty))));
}
in_file.close();
Arrangement_2 arr;
std::cout << "Performing aggregated insertion of " << n << " segments.\n";
auto start = std::chrono::system_clock::now();
insert_non_intersecting_curves (arr, segments.begin(), segments.end());
std::chrono::duration<double> secs = std::chrono::system_clock::now() - start;
std::cout << "V = " << arr.number_of_vertices()
<< ", E = " << arr.number_of_edges()
<< ", F = " << arr.number_of_faces() << std::endl;
std::cout << "Construction took " << secs.count() << " seconds.\n";
return 0;
}
The traits class Arr_non_caching_segment_basic_traits_2 is a model of the ArrangementTraits_2 concept...
Definition: Arr_non_caching_segment_basic_traits_2.h:28
Definition: Arrangement_2.h:57