我的多边形有整数坐标,可能像一条线,我发现 boost::polygon_90_data 可以处理其中一些,但这个不能:
namespace gtl = boost::polygon;
typedef gtl::polygon_90_data<int> Polygon;
typedef gtl::polygon_traits<Polygon>::point_type Point;
Polygon poly;
Point pts5[] = { Point(100, 200), Point(200, 200), Point(200, 400), Point(200, 200), Point(100, 200) };
gtl::set_points(poly, pts5, pts5 + 5);
contain = gtl::contains(poly, Point(197, 202)); // expect false
contain = gtl::contains(poly, Point(200, 302)); // expect true
contain = gtl::contains(poly, Point(200, 400)); // expect true
contain = gtl::contains(poly, Point(150, 200)); // expect true
在2,3条件下,gtl::contains返回false,即使通过Point(200, 400)是我自己指定的坐标。所以为什么?使用 gtl::polygon_90_data 是否有一些限制?