Boost::geometry::covered_by错误的结果
boost::geometry::covered_by wrong results
我有一个boost::geometry::covered_by
方法的问题,以确定点是否在多边形内。在下面的例子中,我有一个点正好在多边形之外。点距离多边形的x坐标(0.1377)。多边形的第三个点的y坐标为4.999999999999999982。这就引出了一个问题。当我将4.999999999999999982更改为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;
}
这听起来像是一个bug。您应该将其发布到boost跟踪:
https://svn.boost.org/trac/boost/相关文章:
- 如何修复循环中的错误产生的错误结果?
- 添加可变参数函数的错误结果
- 使用特征 3 线性系统求解器的错误结果
- 按位包含 OR 的错误结果
- 如果我将索引变量更改为零,并且合并函数中的k = 0,则获得合并排序的错误结果
- STD :: FPCLASSIFY的错误结果使用Valgrind进行长时间的双重双重结果
- 视觉工作室的错误结果
- 将C#struct传递给C 不受管理的DLL返回错误结果
- 最长的常见子字错误结果
- 华氏度到摄氏度的错误结果
- UE4中简单坐标变换的错误结果
- 记忆错误结果的说明[编译器行为]
- 如何解决错误PRJ0002:错误结果 -1073741515从"cl.exe"返回?
- 错误 PRJ0002:错误结果 -1073741515 从"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\cl.
- glGetUniformLocation OpenGL ES 2.0(在ipad 3 iOS 7.0.3上返回错误结果)
- 在模板函数中调用std::for_each时出现错误结果
- 使用copy和back_inserter将矢量附加到其自身时出现错误结果
- CUDA 线程在全局内存中的私有位置写入时出现错误结果
- 来自 c++ 代码的错误结果
- 使用浮点值和铸造的算术运算的错误结果 - 差异很大,我想这不是准确值的情况(429497)?