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

使用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<Point> 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. 复杂多边形光栅化算法

    虽然已经一年多没有维护gbox这个图形库项目了,最近确实时间不够用... 今年的重点是把xmake彻底正好,至少在架构和大功能(包依赖管理)上,要完全落实下来,后期就是零散的维护和插件功能扩展了.. ...

  2. 多边形之间相交求交点的算法_路径规划算法总结

    本文来自知乎网友@搬砖的旺财,地平线机器人算法工程师.作者根据自己本科和硕士阶段的学习经历,整理归纳了所接触过的规划算法. 1.自主机器人近距离操作运动规划体系 在研究自主运动规划问题之前,首先需建立 ...

  3. c++多边形扫描线填充算法_基于3DGIS技术的梯形格网构建及其简化算法设计

    传统矢量地图LOD绘制流程包含简化.剖分与渲染三个步骤.由上述分析可知,传统矢量地图LOD绘制流程中简化与剖分是两个独立的过程,重复的剖分计算导致其渲染效率相对低下.梯形格网方法解决了传统方法中重复剖 ...

  4. 多边形的扫描转换算法——扫描线算法(计算机图形学)

    扫描线算法是扫描转换多边形的常用算法,它充分利用了相邻像素之间的连贯性,避免了逐点判断和反复求交计算,达到了减少计算量和提高算法效率的目的. 处理对象:非自交多边形 (边与边之间除了顶点外无其它交点) ...

  5. 图形学基础笔记II:多边形光栅化算法和显卡三角形光栅算法

    为什么三角形就够了 实际对于 3D 来说肯定全是基于三角形的 geometry - OpenGL: Is it more efficient to use GL_QUADS or GL_TRIANGL ...

  6. 多边形快速凸包算法(Melkman‘s Algorithm)

    前言 平面点集的凸包算法一文介绍了如何计算平面点集或者任意多边形的凸包.对于随机的平面点集,Graham scan和Andraw's 单调链算法已经是最快的算法了.但是对于没有自相交的封闭的简单多边形 ...

  7. (计算机图形学)多边形的扫描转换算法——边界标志算法

    多边形的扫描转换算法--边界标志算法 边界标志算法基本思想 -帧缓冲器中对多边形的每条边进行直线扫描转换,亦即对多边形边界所经过的象素打上标志. –然后再采用和扫描线算法类似的方法将位于多边形内的各个 ...

  8. 计算机图形学第一次上机——中点线算法和中点圆算法

    计算机图形学第一次上机实验 课程实验报告 目录 计算机图形学第一次上机实验 课程实验报告 一.实验目的 二.实验环境 三.实验内容 1.中点线算法 2.中点圆算法 四.实验心得 附录:程序源代码 一. ...

  9. python3画圆、直线_Bresenham直线算法与画圆算法

    在我们内部开发使用的一个工具中,我们需要几乎从 0 开始实现一个高效的二维图像渲染引擎.比较幸运的是,我们只需要画直线.圆以及矩形,其中比较复杂的是画直线和圆.画直线和圆已经有非常多的成熟的算法了,我 ...

最新文章

  1. js高级程序设计(六)面向对象
  2. 不借助第三方 Windows 7搞定无法删除文件
  3. Request method 'GET' not supported解决方式
  4. timus 1260. Nudnik Photographer 动态规划
  5. [笔记]TB-6S-LX150T-IMG2_HWUserManual_1.02e实例讲解
  6. 实战HCNA1:华为设备快速记忆生成树的角色及选举规则,实施基本的VLAN间路由和基础的VRRP协议...
  7. pptx库ppt演示 python_详解 Python 操作 PPT 的各种骚操作!
  8. 手把手教你如何加入到github的开源世界!
  9. 高并发之——Guava Cache
  10. potplayer视频播放时 多行外挂字幕从下向上显示而不是从上向下显示
  11. PDF转换CAD有什么方法
  12. 《绝区零》首测遭破解,面临资源泄露风险
  13. 【Error】西部数据磁盘插上不显示盘符
  14. 限制p元素之显示2行文字,同时出现省略号。
  15. HbuilderX:uni app踩坑之uView-ui
  16. imresize导入错误ImportError: cannot import name 'imresize'
  17. 2022年5月20日最全摸鱼游戏导航
  18. K11974 最简真分数
  19. 添加 frida-gadget 到安卓应用(无须 root)
  20. 从零到有——我的OA如何成长

热门文章

  1. 机器人指挥交通作文看图说话_交通机器人作文600字
  2. Android 天气APP(四)搭建MVP框架与使用
  3. 【AE表达式】更好的动画时间控制
  4. 我的力扣算法845-数组中的最长山脉
  5. java 双屏_伪程序猿的Windows双屏/效率/美化折腾指南
  6. Java毕设项目智慧后勤系统计算机(附源码+系统+数据库+LW)
  7. 利用php实现图书查询功能,PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
  8. 书评学习笔记《自动驾驶汽车环境感知》
  9. 她把一个“三无”产品做进故宫,还一举颠覆了蛋糕界,厉害了我的仙女姐姐...
  10. 亚马逊云 AWS Systems Manager 代理(SSM 代理)简介