Hey Adam,

thank you very much for the response.

my original polygon example was bad.

but, i tried on this polygon :

Polygon poly { { { 10, 10 }, { 20, 10 }, { 20, 5 }, { 25, 5 }, { 25, 7 }, { 30, 7 }, { 30, 3 }, { 25, 3 }, { 25, 5 }, { 20, 5 }, { 20, 0 }, { 10, 0 }, { 10, 10 } }};

and all i get is that there are two intersection points, and both are "touch".

and when i ran on your examples i got 4 collinear.

is it a bug? am i doing something wrong?

much appreciated,

Sergei

On Wed, May 11, 2016 at 1:19 PM, Adam Wulkiewicz <adam.wulkiewicz@gmail.com> wrote:

Hi Sergei,

Sergei Benkovich wrote:

Hey,

i have an issue where i find self intersections in a polygon.but it doesn't seem to find the method_collinear type.

this is the piece of code:

namespace bg = boost::geometry;

using namespace std;

typedef bg::model::d2::point_xy<double> point_2d;

typedef bg::model::polygon<boost::geometry::model::d2::point_xy<double> > Polygon;

Polygon poly;

poly.outer().push_back(point_2d(0, 10));

poly.outer().push_back(point_2d(10, 0));

Have in mind that this polygon is invalid (too small number of points) so it may even be ignored (I don't remember).

But of course if you had a valid polygon like:

Polygon poly{ { {0, 0},{0, 10}, {10, 10}, {10, 0}, {0, 0} } };

There would be no self intersections returned because the polygon is not self-intersecting.

However if you had a (invalid) Polygons like this:

Polygon poly{ { {0, 0},{0, 10}, {10, 10}, {10, 0}, {0, 0},{ 0, 10 },{ 10, 10 },{ 10, 0 },{ 0, 0 } } };

Polygon poly{ { {0, 0},{0, 10}, {10, 10}, {10, 0}, { 10, 10 },{ 0, 10 },{ 0, 0 } } };

you'd get collinear and blocking self-intersection turns respectively.

Regards,

Adam

_______________________________________________

Geometry mailing list

Geometry@lists.boost.org

http://lists.boost.org/mailman/listinfo.cgi/geometry