判断是否为凸多边形

发布时间 2023-11-07 23:27:55作者: yanghui01

所有内角都在(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博客