【发布时间】:2014-07-23 13:54:55
【问题描述】:
我在使用boost::geometry::covered_by 方法来确定点是否在多边形内时遇到问题。在下面的示例中,我的点完全超出了多边形。点距离多边形很远 x 坐标 (0.1377)。多边形的第三个点具有 y 坐标 (4.9999999999999982)。我认为这会导致问题。当我将 4.9999999999999982 更改为 5.00 时,一切正常。怎么办?
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/io/wkt/wkt.hpp>
int main()
{
typedef boost::geometry::model::d2::point_xy<double> bg_point;
typedef boost::geometry::model::polygon< bg_point, false, true > bg_polygon;
// point is tested (out of polygon)
bg_point p(0.1377, 5.00);
// polygon
bg_polygon poly;
boost::geometry::read_wkt("POLYGON((0.1277 4.97, 0.1277 5.00, 0.1278 4.9999999999999982, 0.1278 4.97, 0.1277 4.97))", poly);
bool inside;
// inside = true here (ERROR!)
inside = boost::geometry::covered_by(p, poly);
// change 4.9999999999999982 to 5.00
boost::geometry::read_wkt("POLYGON((0.1277 4.97, 0.1277 5.00, 0.1278 5.00, 0.1278 4.97, 0.1277 4.97))", poly);
// inside = false here (OK)
inside = boost::geometry::covered_by(p, poly);
return 0;
}
【问题讨论】:
标签: c++ polygon point boost-geometry