-
使用条件
只适用于简单多边形。简单多边形:每个顶点只被两条边分享,如下图所示。
-
术语
带符号面积:顶点p1、p2和p3,通过叉乘(p1p2.X*p2p3.Y - p1p2.Y*p2p3.X)/2计算得到的面积(有正负号),即是带符号面积。
顶点凹凸性:对于待测顶点i,计算i-1, i, i+1组成三角形的带符号面积Area,Area>0为逆时针,Area<0为顺时针,如果其时针特性和多边形的相同,就是凸点(convex vertex),否则为凹点(concave vertex)。
注:判断多边形的时针特性,遍历计算每个顶点与相邻两个顶点组成的三角形的带符号面积,累加,大于0则为逆时针,小于0为顺时针。
Ear:对于待测顶点i,假设其为凸点,且i-1, i, i+1组成的三角形内不包含多边形的其他顶点,则称为Ear。
- 算法流程
1. 先判断多边形顶点序列的方向(顺时针/逆时针)
2. 遍历每个顶点,判断是否为Ear,假如为Ear,则将该点从多边形顶点序列中删除,接着判断下一个顶点,直至只剩三个点。
如下图所示,依次判断点0到点i,点3为Ear则删除,接着判断点4。