
Geometry : 
Subject: Re: [geometry] Accuray issue with geometry::difference() in version Boost 1.57
From: Menelaos Karavelas (menelaos.karavelas_at_[hidden])
Date: 20150424 09:53:26
Hello Mikkel.
I did not yet had time to go over this. Sorry for that. I think it is
safer to create a ticket. This way we will keep track of it.
Thanks for reporting.
 m.
On 24/04/2015 04:35 Î¼Î¼, Mikkel B. Stegmann wrote:
>
> See below. Should this be elevated to a ticket?
>
> Best regards,
> Mikkel B. Stegmann
>
> On 20/04/15 09:04, Mikkel B. Stegmann wrote:
>>
>> Dear Geometry list,
>>
>> the difference issue persists in v1.58. Apparently, it is related to
>> the rescaling policy introduced in v1.56 (if I read previous posts
>> correct). Although I'm reluctant to do so, I can mitigate the issue
>> be defining the BOOST_GEOMETRY_NO_ROBUSTNESS:
>>
>> difference polygon: (249232.00000000003, 761089) (249232, 760980)
>> (265886.20000000001, 760980) (265886.20000000001, 729219) (94021,
>> 729219) (94021, 761089)
>>
>> Should this be elevated to a ticket?
>>
>> Best regards,
>> Mikkel B. Stegmann
>>
>>
>> On 17/04/15 10:47, Mikkel B. Stegmann wrote:
>>> Hi Menalaos,
>>>
>>> somehow the results and code (including input data) got stripped in the
>>> mailversion of my post. Here it is without rawtags:
>>>
>>> Result using Boost v1.55:
>>>
>>> 249.232 761.09
>>> 249.232 760.98
>>> 265.89 760.98
>>> 265.89 729.219
>>> 94.021 729.219
>>> 94.021 761.09
>>> 249.232 761.09
>>>
>>>
>>> Result using Boost v1.57:
>>>
>>> 249.232003466816 761.09
>>> 249.232 760.98
>>> 265.89 760.979984987659
>>> 265.89 729.219
>>> 94.021 729.219
>>> 94.021 761.09
>>> 249.232003466816 761.09
>>>
>>> 
>>>
>>> #include <boost/foreach.hpp>
>>> #include <boost/geometry/geometries/point_xy.hpp>
>>> #include <boost/geometry.hpp>
>>>
>>> #include <cstdio>
>>> #include <assert.h>
>>>
>>> int main() {
>>>
>>> // 2D point with double precision
>>> typedef boost::geometry::model::d2::point_xy<double> BoostPoint;
>>>
>>> // 2D polygon, ring type: clockwise, closed ("the first point
>>> must be
>>> spatially equal to the last point")
>>> typedef boost::geometry::model::polygon<BoostPoint> BoostPolygon;
>>>
>>> BoostPolygon rectangleA;
>>> rectangleA.outer().push_back(BoostPoint( 94.021, 729.219)); //
>>> clockwise
>>> points
>>> rectangleA.outer().push_back(BoostPoint( 94.021, 761.090));
>>> rectangleA.outer().push_back(BoostPoint(265.890, 761.090));
>>> rectangleA.outer().push_back(BoostPoint(265.890, 729.219));
>>> rectangleA.outer().push_back(BoostPoint( 94.021, 729.219)); // close
>>>
>>> BoostPolygon rectangleB;
>>> rectangleB.outer().push_back(BoostPoint(249.232, 760.980)); //
>>> clockwise
>>> points
>>> rectangleB.outer().push_back(BoostPoint(249.232, 780.980));
>>> rectangleB.outer().push_back(BoostPoint(319.232, 780.980));
>>> rectangleB.outer().push_back(BoostPoint(319.232, 760.980));
>>> rectangleB.outer().push_back(BoostPoint(249.232, 760.980)); // close
>>>
>>> std::list<BoostPolygon> differencePolygons;
>>> boost::geometry::difference(rectangleA, rectangleB,
>>> differencePolygons);
>>> assert(differencePolygons.size()==1);
>>>
>>> BOOST_FOREACH(const BoostPoint &point,
>>> differencePolygons.front().outer())
>>> {
>>> printf("%16.15g %16.15g\n", point.x(), point.y());
>>> }
>>>
>>> return 0;
>>> }
>>>
>>>
>>>
>>>
>>> 
>>> View this message in context:
>>> http://boostgeometry.203548.n3.nabble.com/AccurayissuewithgeometrydifferenceinversionBoost157tp4026545p4026547.html
>>> Sent from the Boost Geometry mailing list archive at Nabble.com.
>>> _______________________________________________
>>> Geometry mailing list
>>> Geometry_at_[hidden]
>>> http://lists.boost.org/mailman/listinfo.cgi/geometry
>>
>> _______________________________________________
>> Geometry mailing list
>> Geometry_at_[hidden]
>> http://lists.boost.org/mailman/listinfo.cgi/geometry
>
> _______________________________________________
> Geometry mailing list
> Geometry_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/geometry
Geometry list run by mateusz at loskot.net