求解多边形最小外接圆.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
求解多边形最小外接圆

求解多边形外接圆 求多边形外接圆 7 6 求解多边形外接圆C语言实现 作者:乐思文2011-5-17 班级:地信10901班  目录 1、问题概述 2 2、问题分析 2 3、流程划分及存储结构的选择 3 4、代码实现 5 5、测试样例及结果 6 1、问题概述 求解多边形外接圆,通常我们认为三边以上的图形称之为多边形。在数学中,我们有这样的说法:由三条或三条以上的线段首位顺次连接所组成的封闭图形叫做多边形。按照不同的标准,多边形可以分为正多边形和非正多边形、凸多边形及凹多边形等。 组成多边形的线段至少有3条,三角形是最简单的多边形。组成多边形的每一条线段叫做多边形的边;相邻的两条线段的公共端点叫做多边形的顶点;多边形相邻两边所成的角叫做多边形的内角;连接多边形的两个不相邻顶点的线段叫做多边形的对角线。   多边形还可以分为正多边形和非正多边形。正多边形各边相等且各内角相等。 多边形也可以分为凸多边形及凹多边形,凸多边形又可称为平面多边形,凹多边形又称空间多边形。 当然,并不是所有的多边形都具有外接圆。要用程序解决这个问题,必须搞清楚怎样的多边形才有外接圆。 2、问题分析  n边形的内角和等于180°×(n-2)。    可逆用:   n边形的边=(内角和÷180°)+2 ·过n边形一个顶点有(n-3)条对角线   · n边形共有n×(n-3)÷2个对角线 n边形过一个顶点引出所有对角线后,把多边形分成n-2个三角形   推论:    1.任意凸形多边形的 HYPERLINK /view/178775.htm \t _blank 外角和都等于360°。   2.多边形对角线的计算 HYPERLINK /view/645857.htm \t _blank 公式:   n边形的对角线条数等于1/2·n(n-3)   3.在平面内,各边相等,各内角也都相等的多边形叫做正多边形。两个条件必须同时满足 反例:矩形(各内角相等,各边不一定相等);菱形(各边相等,各内角不一定相等) 由几何知识可得,多边形的外接圆圆心到各个顶点的距离相等,即为,该外接圆的半径。 因此,多边形的外接圆的圆心必定落在,多边形各边的平分线上(平分线上的点到线段端点点的距离相等)。于是,我们可以求出每条边得平分线,然后交于一点,这一个交点,必定就是该多边形外接圆的圆心。 一旦出现一边的平分线不过其交点,那么这样的四边形就不构成具有外接圆的四边形。还有,并不是任意的几个点就能构成多边形的,比如都在一条直线上的5个点,就不能构成一个多边形了。 流程划分及存储结构的选择 数据的读入 每个应用程序都有自己的数据流,而且有固定的输入格式。在处理多边形外接圆的问题时,我们首先得读入相应的数据。对于外接圆,涉及到的特征数据有多边形各点的坐标,以及多边形各边的长度。其中长度特征为二级特征,也就是说可以有两点的坐标计算而得。因此,为了使输入简便,我们只需输入顶点的个数和各顶点的坐标。在格式控制上,采取分行输入的做法。就是没输入一组数就回车换行,在输入坐标时,横标与纵标之间用空格隔开。由一个点顺序输入,当最后一组数据读入完成以后,即可用回车结束输入。 在程序中,还设计用系统函数,进行暂停,若想继续输入下一个多边形的数据,则可以按任意键继续! 数据输出 数据的输出,包含正确结果的输出,当然还有错误信息的提醒。程序的数据输出是这样设计的:当输入的多边形没有外接圆时,输出错误提示信息;当输入的点不能构成多边形时,也输出提示性的错误信息;当正确的输入得到正确的结果时,将输出外接圆的圆心坐标,和外接圆的半径。 数据的存储 当读入每个点的坐标时,采用什么存储结构呢?这里我用的是环状链表的结构来存储。这些节点恰恰是多边形的各顶点,而连接各顶点的指针,恰恰是多边形的各边。很形象。当然不用环状链表也可以错得出来,不过就没这么形象了。对于每个节点设置数据域和指针域。其中数据域,分为两个部分,即为浮点型的横坐标和浮点型的纵坐标。 求圆心坐标 对于这个模块可以单独设计一个函数来实现。先顺序选取相邻的两个顶点,然后求出两个顶点的垂直平分线的交点坐标。如果,成功的话,这个点就是我们要找的外接圆的圆心。只不过外接圆的圆心要求要严格,要满足所有的边得平分线都交于这点。现在只是满足两条那边的平分线,所以只要确定一定,然后再去尝试与其他边得平分线比较,看吻不合吻合,如果每条边都遍历到且吻合了,那么这个点就是圆心,一旦中途出现不吻合的现象,即可输出错误,并且终止这次的运行。这样就可以节省时间和存储空间了。 判断条件 当找到一个点以后,就要判断其他的垂直平分线是不是过这个点,这里也可以编写

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档