#include #include #include #include #include #include #include #include typedef boost::geometry::model::d2::point_xy point_t; typedef boost::geometry::model::polygon poly_t; typedef boost::geometry::model::multi_polygon multi_poly_t; typedef boost::geometry::model::referring_segment ref_segment_t; int main(int argc, char** argv) { poly_t pa, pb; boost::geometry::read_wkt ( "POLYGON((" "-0.973360121250153 0.194701105356216," "-0.923463344573975 0.184775948524475," "-0.858578622341156 0.141421362757683," "0.18477588891983 2.07653665542603," "0.141421347856522 2.1414213180542," "-1.18477594852448 -0.076536700129509," "-1.1414213180542 -0.141421377658844," "-0.973360121250153 0.194701105356216" "))", pa ); boost::geometry::read_wkt ( "POLYGON((" "-0.14142133295536 1.8585786819458," "-1.1414213180542 -0.141421377658844," "-1.07653665542603 -0.184775933623314," "-0.076536625623703 1.81522405147552," "-0.14142133295536 1.8585786819458" "))", pb ); multi_poly_t pc; boost::geometry::union_(pa, pb, pc); std::cout << std::setprecision(200); std::for_each ( pc.begin(), pc.end(), [&](const poly_t & p) { std::cout << "polygon" << std::endl; boost::geometry::for_each_point ( p, [&](const point_t & x) { std::cout << x.x() << " " << x.y() << std::endl; } ); } ); return 0; }