いくつかの長方形をboost::geometryと交差させるための小さなテストアプリケーションがあります。
typedef boost::geometry::model::point
<
double, 2, boost::geometry::cs::cartesian
> point;
typedef boost::geometry::model::polygon<point > polygon;
polygon Intersect(polygon p1, polygon p2) {
std::vector < polygon > result;
boost::geometry::intersection(p1, p2, result);
return result.front();
}
polygon IntersectionTest() {
polygon one, two, three, four;
boost::geometry::read_wkt("POLYGON((35 25, 35 35, 15 35, 15 25, 35 25))", one);
boost::geometry::read_wkt("POLYGON((45 30, 45 50, 25 50, 25 30, 45 30))", two);
boost::geometry::read_wkt("POLYGON((50 0, 50 40, 10 40, 10 0, 50 0))", three);
boost::geometry::read_wkt("POLYGON((40 20, 40 60, 0 60, 0 20, 40 20))", four);
return Intersect(Intersect(Intersect(one, two), three), four);
}
何か間違ったことをしなければなりません。結果は次のようになると思いますが、平行な長方形の交点は常に4 + 1ポイントの長方形である必要があり、エッジにあるため、次の(35 30, 35 40, 25 40, 25 30, 35 30)
ようなポイントを含む10ポイントの長さのポリゴンが得られます。交差点ではまったく。それをSVGに入れると、長方形は期待どおりのように見えます。50 0
50 0
何が間違っている可能性がありますか?バグである場合、boost::geometry
どうすればそれを確認できますか?(現在1.48を使用しています。)バグの場合、問題を回避する方法はありますか?