#include #include #include using namespace boost::polygon; using namespace boost::polygon::operators; int main() { typedef point_data point; std::vector a; a.push_back(point( 50000000000, 50000000000)); a.push_back(point( 12500000000, 50000000000)); a.push_back(point( 0, 100000000000)); a.push_back(point(-12500000000, 50000000000)); a.push_back(point(-50000000000, 50000000000)); a.push_back(point(-50000000000, -50000000000)); a.push_back(point(-37500000000, -50000000000)); a.push_back(point(-50000000000, -100000000000)); a.push_back(point( 50000000000, -100000000000)); a.push_back(point( 37500000000, -50000000000)); a.push_back(point( 50000000000, -50000000000)); a.push_back(point( 50000000000, 50000000000)); polygon_data polygon_a; set_points(polygon_a, a.begin(), a.end()); std::vector b; b.push_back(point(-47702617860, 50000000000)); b.push_back(point( 50000000000, 50000000000)); b.push_back(point( 50000000000, -88753775284)); b.push_back(point(-47702617860, -88753775284)); polygon_data polygon_b; set_points(polygon_b, b.begin(), b.end()); polygon_set_data intersection = polygon_a * polygon_b; std::cout << area(intersection) << std::endl; // Prints 0 std::vector > polygons_in_intersection; intersection.get(polygons_in_intersection); std::cout << polygons_in_intersection.size() << std::endl; // Prints 0 return 0; }