所有内角都在(0, 180)的多边形为凸多边形(Convex),否则为凹多边形(Concave)。
顶点顺序逆时针
顶点顺序顺时针
//是否为凸多边形 public static bool IsConvexPolygon(Vector2[] polygon) { int len = polygon.Length; for (int i = 0; i < len; ++i) //顶点顺序为顺时针 { var a = polygon[i]; var b = polygon[(i + 1) % len]; var c = polygon[(i + 2) % len]; var ba = a - b; var bc = c - b; float cross = V2Cross(ref ba, ref bc); if (cross <= 0) return false; } return true; }
参考
【计算几何】凸多面体重叠判断算法:GJK 算法详解 & C++代码实现二维情形的凸多边形重叠判断_gjk算法-CSDN博客
标签:判断,polygon,是否,凸多边形,len,算法,var,顶点 From: https://www.cnblogs.com/sailJs/p/17807775.html