#include #include #include #define ADD(X,Y) append(all_points_in_radius,make >(X,Y)) double convex_hull_area() { using boost::geometry::model::d2::point_xy; using boost::geometry::append; using boost::geometry::make; boost::geometry::model::polygon > all_points_in_radius; ADD(0,53); ADD(0,103); // point is on hull ADD(0,53); ADD(0,3); ADD(0,3); ADD(0,0); // point is on hull ADD(1,0); ADD(1,1); ADD(2,1); ADD(2,0); ADD(2,0); ADD(2,0); ADD(3,0); ADD(3,1); ADD(4,1); ADD(4,0); ADD(5,0); ADD(0,3); ADD(10,3); ADD(10,2); ADD(10,2); ADD(10,2); ADD(5,2); ADD(5,0); ADD(5,0); ADD(55,0); ADD(105,0); // point is on hull boost::geometry::model::polygon > hull; boost::geometry::convex_hull(all_points_in_radius,hull); return boost::geometry::area(hull); } int main() { std::cout << "This should give 1407.5:" << std::endl; std::cout << convex_hull_area() << std::endl; return 0; }