#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_diagram_1.h>
#include <CGAL/envelope_2.h>
#include <cassert>
typedef CGAL::Exact_rational Number_type;
typedef Traits_2::Curve_2 Curve_2;
void print_diagram (const Diagram_1& diag)
{
Diagram_1::Edge_const_handle e = diag.leftmost();
Diagram_1::Vertex_const_handle v;
while (e != diag.rightmost())
{
std::cout << "Edge: ";
if (! e->is_empty())
{
Circle_2 circ = e->curve().supporting_circle();
}
else
std::cout << " [empty]" << std::endl;
v = e->right();
e = v->right();
}
assert(e->is_empty());
std::cout << "Edge: [empty]" << std::endl;
return;
}
int main ()
{
Curve_2 circles[4];
circles[0] = Circle_2 (Kernel_point_2 (1, 3),
CGAL::square(2));
circles[1] = Circle_2 (Kernel_point_2 (4, 5),
CGAL::square(4));
circles[2] = Circle_2 (Kernel_point_2 (5, 1),
CGAL::square(1));
circles[3] = Circle_2 (Kernel_point_2 (6, 7),
CGAL::square(2));
Diagram_1 min_diag;
lower_envelope_2 (&(circles[0]), &(circles[4]), min_diag);
print_diagram (min_diag);
Diagram_1 max_diag;
upper_envelope_2 (&(circles[0]), &(circles[4]), 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:22
double to_double(const NT &x)