Boost.Geometry union_

union_()は、2つの図形の和を計算するアルゴリズムです。
第3引数で出力結果が返されます。

#include <iostream>
#include <vector>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/box.hpp>
#include <boost/assign/list_of.hpp>

namespace bg = boost::geometry;

typedef bg::model::d2::point_xy<double> point;
typedef bg::model::polygon<point> polygon;
typedef bg::model::box<point> box;

int main()
{
    const box bx(point(2, 0), point(6, 4.5));

    polygon poly;
    bg::exterior_ring(poly) = boost::assign::list_of<point>
        (1, 1)
        (5, 5)
        (5, 1)
        (1, 1)
        ;

    std::vector<polygon> out;
    bg::union_(bx, poly, out);
}


参照:
union_ algorithm


修正履歴:
2011/08/03 ポリゴンの向きが逆だったので修正。結果が反対になってた。