#include <cassert>
#include <CGAL/Exact_rational.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Arr_circle_segment_traits_2.h>
#include <CGAL/Arrangement_2.h>
#include <CGAL/Envelope_2/Envelope_diagram_1.h>
#include <CGAL/Envelope_2/envelope_2.h>
using Number_type = CGAL::Exact_rational;
using Curve_2 = Traits_2::Curve_2;
void print_diagram (const Diagram_1& diag) {
Diagram_1::Edge_const_descriptor e = diag.leftmost();
while (e != diag.rightmost()) {
std::cout << "Edge: ";
if (! diag.empty_edge_curves(e)) {
Circle_2 circ = diag.edge_curve(e).supporting_circle();
}
else std::cout << " [empty]" << std::endl;
auto v = diag.right_vertex(e);
e = diag.right_edge(v);
}
assert(diag.empty_edge_curves(e));
std::cout << "Edge: [empty]" << std::endl;
}
int main() {
Curve_2 circles[4];
Diagram_1 min_diag;
print_diagram(min_diag);
Diagram_1 max_diag;
print_diagram(max_diag);
return 0;
}
This class is the default envelope-diagram class used by envelope functions to represent the minimiza...
Definition Envelope_diagram_1.h:31
double to_double(const NT &x)
void upper_envelope_2(InputIterator begin, InputIterator end, EnvelopeDiagram &diag)
computes the upper envelope of a set of curves in , given by the range [begin, end).
void lower_envelope_2(InputIterator begin, InputIterator end, EnvelopeDiagram &diag)
computes the lower envelope of a set of curves in , given by the range [begin, end).