BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET(SLDPoint, double, bg::cs::cartesian, _GetX, _GetY, _SetX, _SetY)
BOOST_GEOMETRY_REGISTER_RING(vector<SLDPoint>)
bool check_covered = bg::covered_by(LineNodes[i]->_GetLine()->_GetPoints(), LineNodes[j]->_GetLine()->_GetPoints());
cout<<check_covered<<endl;
我为covered_by函数传入了两个SLDPoint的数组。
其中第一个数组中的点为:
Point:(0.00000,-0.00000)
Point:(15000.00020,-0.00000)
Point:(15000.00020,1450.00000)
Point:(0.00000,1450.00000)
第二个数组中的点为:
Point:(4174.83730,1450.02250)
Point:(4185.07960,1450.02250)
Point:(4258.50230,1450.02250)
Point:(4331.92240,1450.02250)
Point:(4342.16730,1450.02250)
Point:(4342.16730,1440.02500)
Point:(4342.16730,1430.02500)
Point:(4342.16730,1420.02500)
Point:(4342.16730,1410.02500)
Point:(4331.92240,1410.02500)
Point:(4258.50230,1410.02500)
Point:(4185.07960,1410.02500)
Point:(4174.83730,1410.02500)
Point:(4174.83730,1420.02500)
Point:(4174.83730,1430.02500)
Point:(4174.83730,1440.02500)
结果check_covered的值居然是true,也就是说第一个图形在第二个图形里面??
图中有更直观的展示。整个这个大的矩形就是我输入的第1个数组所形成的封闭图形。而在它的上方有个非常非常小的矩形就是我输入的第2个数组所形成的封闭图形。这结果是不是不太对?我确定我没有弄反,其余几百个图形都判断正确,唯独这两个有问题。covered_by换成within也获得一样的结果,而且应该也不是浮点数精度的问题,我把它乘以10000并转换成int型还是得到一样的结果。