c++ - boost::geometry::covered_by 错误的结果

标签 c++ polygon point boost-geometry

我在使用 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;
}

最佳答案

这听起来像是一个错误。您应该将其发布到 boost trac:

https://svn.boost.org/trac/boost/

关于c++ - boost::geometry::covered_by 错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24912433/

相关文章:

c++ - 升压几何 : Polygon definition

algorithm - 平行四边形内的随机点

Java 将播放器平滑地从一处移动到另一处

mysql - mysql中多边形和点之间的距离

android - 更新 ndk 修订版 11 后错误未定义对 std::__ndk1 的引用

c++ - C++ 逗号运算符的优先级

c++ - C++ 的 SQL 请求助手

c++ - 如何使用 OpenMP 实现 argmax?

c++ - 确定正确的原点以围绕 QPolygonF 旋转

java - 增加距离后计算点的 x y