#include <CGAL/basic.h>
#include <CGAL/Arrangement_with_history_2.h>
#include <CGAL/Arr_walk_along_line_point_location.h>
#include "arr_circular.h"
#include "arr_print.h"
typedef Arr_with_hist::Curve_handle Curve_handle;
int main() {
const Number_type _7_halves = Number_type(7) / Number_type(2);
Curve C[9];
Arr_with_hist arr;
Curve_handle handles[9];
for (
size_t k = 0; k < 9; ++k) handles[k] =
insert(arr, C[k]);
std::cout << "The initial arrangement size:\n";
print_arrangement_size(arr);
std::cout << "Removing C[0]: ";
<< " edges have been removed.\n";
print_arrangement_size(arr);
Point_location pl(arr);
const Point q{_7_halves, 7};
Point_location::result_type obj = pl.locate(q);
auto* e = boost::get<Arr_with_hist::Halfedge_const_handle>(&obj);
auto e1 = arr.split_edge(arr.non_const_handle(*e), q);
auto e2 = e1->next();
std::cout << "After edge split:\n";
print_arrangement_size(arr);
arr.merge_edge(e1, e2);
std::cout << "After edge merge:\n";
print_arrangement_size(arr);
return 0;
}