#include #include #include BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(cs::cartesian) #include #include typedef float real_t; typedef boost::geometry::model::d2::point_xy pnt_t; typedef boost::geometry::model::polygon polygon_t; void print(std::ostream& os, const std::string& name, const polygon_t& poly) { os << name << "={"; bool first = true; for(auto& p : boost::geometry::exterior_ring(poly)) { if(!first) { std::cout << ","; } else { first = false; } os << "{" << p.x() << "," << p.y() << "}"; } os << "};" << std::endl; } int main(int argc, char** argv) { std::cout.precision(10); real_t data1[][2] = {{0,0}, {-0.3681253195,0.9297761917}, {2.421203136,2.034152031}, {2.789328575,1.104375958}, {0,0}}; real_t data2[][2] = {{2.76143527,1.093332171}, {2.076887131,1.822299719}, {4.263789177,3.875944376}, {4.948337555,3.146976948}, {2.76143527,1.093332171}}; polygon_t p1, p2; boost::geometry::append(p1, data1); boost::geometry::append(p2, data2); std::vector output; boost::geometry::union_(p1, p2, output); print(std::cout, "p1", p1); print(std::cout, "p2", p2); print(std::cout, "i", output.front()); return 1; }