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 ポリゴンの向きが逆だったので修正。結果が反対になってた。