Boost Geometry交差関数の次のテスト関数を書きました
typedef boost::geometry::model::polygon<boost::tuple<int, int> > Polygon;
void test_boost_intersection() {
Polygon green, blue;
boost::geometry::read_wkt("POLYGON((0 0,0 9,9 9,9 0,0 0))", green);
boost::geometry::read_wkt("POLYGON((2 2,2 9,9 9,9 2,2 2))", blue);
std::deque<Polygon> output;
boost::geometry::intersection(green, blue, output);
BOOST_FOREACH(Polygon const& p, output)
{
std::cout << boost::geometry::dsv(p) << std::endl;
}
};
私は出力結果を次のように期待していました:
(((2, 2), (2, 9), (9, 9), (9, 2), (2, 2)))
しかし、私は得ました:
((((1, 9), (9, 9), (9, 2), (2, 2), (1, 9))))
Boost1.54を使用しています。
最初のポリゴンを変更すると、交差は正しく機能します。
編集:ポリゴンのタイプをに変更したとき
boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> >
正しく動作するようになりました。では、以前のタイプを常に使用することはできませんか?