自学内容网 自学内容网

C#实现凸壳算法

凸壳计算代码: 

public static PointD[] calcConvexHull(PointD[] points)
{
    // 按 x 坐标对点进行排序
    Array.Sort(points, (p1, p2) => p1.X.CompareTo(p2.X));

    // 创建下凸壳
    var lowerHull = new List<PointD>();
    foreach (var point in points)
    {
        while (lowerHull.Count >= 2 &&
               Cross(lowerHull[lowerHull.Count - 2], lowerHull[lowerHull.Count - 1], point) <= 0)
        {
            lowerHull.RemoveAt(lowerHull.Count - 1);
        }
        lowerHull.Add(point);
    }

    // 创建上凸壳
    var upperHull = new List<PointD>();
    for (int i = points.Length - 1; i &

原文地址:https://blog.csdn.net/LiRongLu_/article/details/145022942

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!