Subject: [Boost-bugs] [Boost C++ Libraries] #9909: boost::geometry::intersection on two polygons returns incorrect empty intersection
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-04-15 14:03:32
#9909: boost::geometry::intersection on two polygons returns incorrect empty
intersection
------------------------------+---------------------------
Reporter: romanp@⦠| Owner: barendgehrels
Type: Bugs | Status: new
Milestone: To Be Determined | Component: geometry
Version: Boost 1.55.0 | Severity: Problem
Keywords: intersection |
------------------------------+---------------------------
Hi,
There is problem with intersection of 2 BoostMultiPolygons. Result
consisted of only one poly, but should contain 2.
Our boost version is 1.55. We use MS VS 2005.
Regards, Roman.
Source:
{{{
typedef boost::geometry::model::d2::point_xy<double>
BoostPoint;
typedef boost::geometry::model::ring<BoostPoint, true>
BoostRing;
typedef boost::geometry::model::polygon<BoostPoint, true>
BoostPolygon;
typedef boost::geometry::model::multi_polygon<BoostPolygon>
BoostMultiPolygon;
std::ifstream in("input.txt");
BoostMultiPolygon mpSrc1, mpSrc2, mpRes;
int polyCount;
in>>polyCount;
for (int i=0;i<polyCount;i++)
{
int pointCount;
in>>pointCount;
BoostPolygon curPolygon;
BoostRing curRing;
for(int j=0;j<pointCount;j++)
{
double x,y;
in>>x>>y;
curRing.push_back(BoostPoint(x,y));
}
curPolygon.outer() = curRing;
mpSrc1.push_back(curPolygon);
}
in>>polyCount;
for (int i=0;i<polyCount;i++)
{
int pointCount;
in>>pointCount;
BoostPolygon curPolygon;
BoostRing curRing;
for(int j=0;j<pointCount;j++)
{
double x,y;
in>>x>>y;
curRing.push_back(BoostPoint(x,y));
}
curPolygon.outer() = curRing;
mpSrc2.push_back(curPolygon);
}
boost::geometry::intersection(mpSrc1, mpSrc1, mpRes); // mpRes contain
only 1 poly.
}}}
Contaiment of input.txt :
{{{
2
27
1.7795412086922593 -0.6928106373008438
1.7891900856407261 -0.73346701678889104
1.8205003053203772 -0.93531819320144416
1.8121292936644648 -1.1807879269729795
1.7394808987253128 -1.4154103358489794
1.6076723780308959 -1.6226589254855832
1.4259881506704424 -1.7879353774152118
1.2072258150073207 -1.8995978354269698
0.96679470265783485 -1.9497809426285055
0.72163046540975617 -1.934949866855677
0.60267613336191828 -1.8966346198312143
0.41731164084513261 -1.7901953365848997
0.27656953156479103 -1.6293196865339519
0.19571165090939757 -1.4314527634772853
0.18350609592762368 -1.2180509346857271
0.24127641714720549 -1.0122551473377328
0.36470663256680463 -0.8348324228970293
0.67786452669735997 -0.60942974505933833
0.76516102039389844 -0.55513726961522536
0.81184032592082556 -0.52936777403881374
0.9456140934360856 -0.46301076844880257
1.0715439430748541 -0.41043054738175999
1.2051029188121665 -0.39184926061543224
1.3438936378781083 -0.42743758887205224
1.4793480212800743 -0.49201773445646352
1.6124976944936933 -0.5720053785043937
1.7795412086922593 -0.6928106373008438
21
1.1615462164308124 1.9754373027139951
1.5360149764505899 1.886934666316108
1.7087948729537776 1.8041724959027103
1.8362554271519613 1.661147055471015
1.8986519852214538 1.4800141235445734
1.8863188239381428 1.2888326322334416
1.8011664480979825 1.1172181154349941
1.6563856381255915 0.99175502703475193
1.4722208702867912 0.93196155014586246
1.3307251338101709 0.96302852254101112
1.1889015041869535 1.0063804359754345
1.0851554485208663 1.0419536723519502
0.9303284683690195 1.1007328938955687
0.86940784993802189 1.126033284720011
0.73031572956801372 1.2427081650372707
0.64785873725084664 1.4044502129533221
0.63514254042735985 1.5855522394036576
0.69418824418515901 1.7572299913513629
0.81561115796600125 1.8921971045865578
0.98011239294323005 1.9690019829279639
1.1615462164308124 1.9754373027139951
2
27
0.4022007544928915 -0.79320935498558631
0.67786021968757104 -0.59223694917595526
0.72926567327554304 -0.56003487788773432
0.83396700970889248 -0.50259243802045006
0.94559413155101379 -0.44613850745202116
1.0715439430748541 -0.39325208386734267
1.2051029188121665 -0.36717869475972431
1.2079466156233769 -0.36787014029848375
1.383100956224427 -0.42804360792267371
1.5711416115100447 -0.55533336824076429
1.5817841916061597 -0.56708324300601975
1.712343915281392 -0.71850008854626279
1.8205003053203772 -0.93531819320144416
1.812129293664464 -1.1807879269729791
1.7394808987253114 -1.4154103358489782
1.6076723780308948 -1.6226589254855814
1.4259881506704415 -1.7879353774152098
1.2072258150073203 -1.899597835426968
0.96679470265783507 -1.9497809426285047
0.72163046540975617 -1.934949866855677
0.53668372332048819 -1.8329698805024297
0.38798986558594484 -1.6829853756425535
0.28761203927878709 -1.4971642062029744
0.24369363713914372 -1.2905815617733336
0.25979764523973214 -1.0799969565688248
0.33461758716561152 -0.88249457350408611
0.4022007544928915 -0.79320935498558631
24
0.69106840510193146 1.7283118331970613
0.80491403567959896 1.8636891961105639
0.97252446578255225 1.9537292239908663
1.1615462164308124 1.9754373027139951
1.445329131723774 1.9083675258739219
1.6295697181486921 1.8205585564967293
1.778913808591188 1.6814494215012656
1.87956003859109 1.503895640420464
1.9222073685313958 1.304305525338967
1.908582733892098 1.1608175914897563
1.9058154916000392 1.1489111215390388
1.8042808050307477 0.99216149052586733
1.6864779577548399 0.90268670286901209
1.5974991741674556 0.89671357054168577
1.4640547165764142 0.9042573086441501
1.3308383768494927 0.94117823976176729
1.1908244144294404 0.99088339761011279
1.0620930550951979 1.0410213286408192
0.93028741744520127 1.0862837299344523
0.9007363188137486 1.0981042670180636
0.7529401342681733 1.21045558001871
0.66108738214900509 1.3717924996227908
0.6399134449656606 1.5562327178056883
0.69106840510193146 1.7283118331970613
}}}
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/9909> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:16 UTC