In geometry, a simple polygon is closed polygonal chain of line segments that do not cross each other. That is, it consists of finitely many line segments, each line segment endpoint is shared by two segments, and the segments do not otherwise intersect. In other words, a simple polygon is a polygon whose sides do not cross. Simple polygons are also called Jordan polygons, because the Jordan curve theorem can be used to prove that such a polygon divides the plane into two regions, the region inside it and the region outside it. A simple polygon in the plane is topologically equivalent to a circle and its interior is topologically equivalent to a disk.
A polygon that is not simple is called self-intersecting by geometers and complex by computer graphics programmers (in geometry, a complex polygon is something different). Such a polygon does not necessarily have a well-defined inside and outside.
In computational geometry, several important computational tasks involve inputs in the form of a simple polygon; in each of these problems, the distinction between the interior and exterior is crucial in the problem definition.
- Point in polygon testing involves determining, for a simple polygon P and a query point q, whether q lies interior to P.
- Simple formulae are known for computing polygon area; that is, the area of the interior of the polygon.
- Polygon triangulation: dividing a simple polygon into triangles. Although convex polygons are easy to triangulate, triangulating a general simple polygon is more difficult because we have to avoid adding edges that cross outside the polygon. Nevertheless, Bernard Chazelle showed in 1991 that any simple polygon with n vertices can be triangulated in Θ(n) time, which is optimal. The same algorithm may also be used for determining whether a closed polygonal chain forms a simple polygon.
- Polygon union: finding the simple polygon or polygons containing the area inside either of two simple polygons
- Polygon intersection: finding the simple polygon or polygons containing the area inside both of two simple polygons
- The convex hull of a simple polygon may be computed more efficiently than the complex hull of other types of inputs, such as the convex hull of a point set.
- GPC General Polygon Clipper Library, a C++ library which computes the results of clipping operations (difference, intersection, exclusive-or and union) on sets of polygons. It is usable with C, C#, Delphi, Java, Perl, Python, Haskell, Lua, VB.Net.