Polygon Representations
Two new representations for polygons are introduced in Version 12. Polygon[{p1, p2, …}{{q1, q2, …}}] extends the existing representation to allow polygons with holes. Polygon[{p1, p2, …}, data] provides a canonical efficient representation in terms of outer and inner boundary polygons with shared coordinates.
The canonical representation of a polygon, given by CanonicalizePolygon, unifies and simplifies operations on polygons with or without holes or self-crossings.
Extract the outer and inner boundary polygons using OuterPolygon and InnerPolygon.
Operations on polygons with holes and self-crossings can be reduced to operations on simple polygons.