外接圆算法、多边形的外接圆算法(C#、窗体应用程序)

  基于自定义的点或多边形,生成包含所有点的最小外接圆

  使用VS2019,C#,建立窗体应用程序,PictureBox用于绘制自定义的点或多边形。

一、算法思路

(1)对所绘制的多边形,(注:这里只允许绘制一个多边形),寻找多边形的所有顶点中距离最远的两个点,并以这两个点组成的线段来寻找构成最小外接圆的第三个点。

(2)遍历多边形中其他的点,找到距离此线段最远的点。

(3)三点画圆,得到多边形的最小外接圆。

(4)对于随机的或自定义的点集,原理相同,只需要将多边形的点换成点集中的点。

二、实现代码

            Graphics graphics = pictureBox1.CreateGraphics();
            PolyMaxDis(polyPoints);

            double max1 = 0;
            int num = polyPoints.Count;
            Point x0 = new Point(0, 0);
            Point A = new Point(0, 0);

            for (int k = 0; k < num - 1; k++)
            {
                if (PL1(polyPoints[k], recp1, recp2) > max1)
                {
                    max1 = PL1(polyPoints[k], recp1, recp2);
                    x0 = polyPoints[k];
                }
            }

            DrawRec(graphics, recp1, recp2, x0);
            recp1 = A;
            recp2 = A;
            max1 = 0;
        public void PolyMaxDis(List p)
        {
            int count = p.Count;
            if (count >= 3)
            {
                for (int i = 0; i < count; i++)
                {
                    for (int j = i; j < count; j++)
                    {
                        if (Convert.ToDouble(Euclidean(p[i], p[j])) > max)
                        {
                            max = Convert.ToDouble(Convert.ToDouble(Euclidean(p[i], p[j])));
                            recp1 = p[i];
                            recp2 = p[j];
                        }
                    }
                }
            }
        }

(PL1是计算点线距离的函数)

三、结果

外接圆算法、多边形的外接圆算法(C#、窗体应用程序)_第1张图片

原创作品,禁止抄袭

需要完整代码,欢迎留言

你可能感兴趣的:(c#,开发语言)