![]() |
#include <CGAL/min_quadrilateral_2.h>
computes a minimum area enclosing parallelogram of the point set
described by [points_begin, points_end), writes its
vertices (counterclockwise) to o and returns the past-the-end
iterator of this sequence.
If the input range is empty, o remains unchanged.
If the input range consists of one element only, this point is written
to o four times.
Precondition
The points denoted by the range [points_begin, points_end) form the boundary of a simple convex polygon P in counterclockwise orientation.The geometric types and operations to be used for the computation are specified by the traits class parameter t. The parameter can be omitted, if ForwardIterator refers to a two-dimensional point type from one the Cgal kernels. In this case, a default traits class (Min_quadrilateral_default_traits_2<K>) is used.
Requirement
File: examples/Min_quadrilateral_2/minimum_enclosing_parallelogram_2.cpp
#include <CGAL/Cartesian.h>
#include <CGAL/Polygon_2.h>
#include <CGAL/point_generators_2.h>
#include <CGAL/random_convex_set_2.h>
#include <CGAL/min_quadrilateral_2.h>
#include <iostream>
struct Kernel : public CGAL::Cartesian<double> {};
typedef Kernel::Point_2 Point_2;
typedef Kernel::Line_2 Line_2;
typedef CGAL::Polygon_2<Kernel> Polygon_2;
typedef CGAL::Random_points_in_square_2<Point_2> Generator;
int main()
{
// build a random convex 20-gon p
Polygon_2 p;
CGAL::random_convex_set_2(20, std::back_inserter(p), Generator(1.0));
std::cout << p << std::endl;
// compute the minimal enclosing parallelogram p_m of p
Polygon_2 p_m;
CGAL::min_parallelogram_2(
p.vertices_begin(), p.vertices_end(), std::back_inserter(p_m));
std::cout << p_m << std::endl;
return 0;
}