早教吧 育儿知识 作业答案 考试题库 百科 知识分享

关于最小包围圆问题我还想请教一下:1.主函数的两个参数有什么用?2.程序中距离圆心最远的点程序中好像程序判断点是否在圆内,如果不在,则用圆上两点和圆外的点重新求最小圆,并不是用

题目详情
关于最小包围圆问题我还想请教一下:1.主函数的两个参数有什么用?2.程序中距离圆心最远的点程序中好像
程序判断点是否在圆内,如果不在,则用圆上两点和圆外的点重新求最小圆,并不是用距离圆心最远的点去判断是否在圆内并求最小圆啊.
▼优质解答
答案和解析
1.
主函数的参数本程序并没有使用,但是这个main的参数在C语言中是有约定的,假设你编写的程序叫做circle,那么当你运行circle 100 5的时候,main会得到argc=3(代表参数的个数,第一个参数是程序名),而argv是一个字符串指针的数组,值分别为:
argv[0]="circle" //程序名
argv[1]="100" 第一个参数
argv[2]="5" 第二个参数
这两个参数主要用于程序获得命令行的参数.
2.
我给你的参考实现里的确像你说的,并没有求圆心外距离最大的点.因为即使不求最远的,也能保证这个过程最终是收敛的,因为包含圆外一点和圆上两点的新圆肯定比原来的大,而点的个数是有限的,所以最终总能得到一个最大的圆.你可以针对这个做出优化,
有时候会存在半径相同,圆心不同的多个解,本程序只能求出其中一种.
给定如下四个点,就存在两个符合条件的最小圆,他们的半径相同,但是圆心不同:
(1·,0),(0,1) (0,0) (1.1,1.1)这四个点,有两组解
The circle's center is [0.600000,0.500000],radius is 0.781025
The circle's center is [0.500000,0.600000],radius is 0.781025