## Polygon

**Summary**

A structure representing a single closed polygon. This would
represent a single part of a polygon shape. No holes. Unlike a
shapefile, this polygon does not list the first point again at the
end. (This prevents confusion when adding points to the
list.)

**Fields**

m_Points |
List of points. For normal use, please use Add_Point or Insert_Point to correctly handle extents and prevent duplicate entries |

**Methods**

Add_Point |
This function has 2 overloads. |

Add_Segment |
Appends the the givin line segment to the end of the polyline. We assume that if the first point in the segment is the same as the endpoint of the polygon, we don't need to add the first point. |

ClosestPointOn |
In the 2D case, we can treat the edges of the extents as segments and use the segment distance equations to find the closest distance. |

Constructor |
This function has 2 overloads. |

Copy |
Returns a new instance of the Polygon class with the same values as this object. |

Insert_Point |
This function has 2 overloads. |

Insert_Segment |
Inserts a segment into a polyline. This will check the points of the segment and only add the points if they are not identical to what will become the adjacent points. |

IntersectsWith |
This function has 5 overloads. |

Invalidate |
Many properties are derived from the points. Generally, these are calculated once and cached. Most changes that can be made externally will automatically cause an invalidation to occur, so adding points, for instance, will force the perimeter to be recalculated. This forces such an invalidation so that the next time derived properties are queried, they will be recalculated. |

mwShape_To_Polygon |
If a Shape has multiple parts, this will create a separate polyline for each part. |

Polygon_To_mwShape |
Converts a list of polylines into a single multi-part shape |

SegmentsWithin |
Returns a list of segments from the Polygon that are within the submitted extents. |

ShortestPathTo |
In the 2D case, we can treat the edges of the extents as segments and use the segment distance equations to find the closest distance. This returns null if the shapes intersect. |

ToSegments |
Will create a list of segment objects for the entire polygon |

TouchesTheBoundaryOf |
This function has 2 overloads. |