Testing whether a polygon is simple or complex

Drew Noakes picture Drew Noakes · Oct 23, 2010 · Viewed 14.9k times · Source

For a polygon defined as a sequence of (x,y) points, how can I detect whether it is complex or not? A complex polygon has intersections with itself, as shown:

example complex polygon image

Is there a better solution than checking every pair which would have a time complexity of O(N2)?

Answer

Reed Copsey picture Reed Copsey · Oct 23, 2010

There are sweep methods which can determine this much faster than a brute force approach. In addition, they can be used to break a non-simple polygon into multiple simple polygons.

For details, see this article, in particular, this code to test for a simple polygon.