Opened 9 years ago
Last modified 9 years ago
#9909 new Bugs
boost::geometry::intersection on two polygons returns incorrect result in one case
Reported by: | Owned by: | Barend Gehrels | |
---|---|---|---|
Milestone: | To Be Determined | Component: | geometry |
Version: | Boost 1.55.0 | Severity: | Problem |
Keywords: | intersection | Cc: |
Description
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
Change History (1)
comment:1 by , 9 years ago
Summary: | boost::geometry::intersection on two polygons returns incorrect empty intersection → boost::geometry::intersection on two polygons returns incorrect result in one case |
---|
Note:
See TracTickets
for help on using tickets.