总长度为凸包长度加上以L为半径的圆的周长,n边形的内角和为(n-2)*180,而扇形内角和加上多边形内角和恰为n*180(多边形每个角与对应圆弧的扇形所对应的角互补).
求凸包:
(1)排列:选出纵坐标最小的点,(若存在两点纵坐标相同,则取横坐标小的点)为起点,依次与其他点连接,按极坐标从小道大依次排列(根据叉乘,极坐标小的点在左边.:如线段p1,p2,若p1在p2左边,则(p1.x*p2.y)-(p2.x*p1.y)>0。
(2):连接成凸包:从第一个点开始,找出一个点与之相连,使得该边为该点与所有点连接的边中的最左的边,又从选中的点开始,依次执行之前的过程,直到结束(结束时找到的点为第一个点,围成一个圈)
代码:
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
struct point{
}p[1000];
double sum,pI=acos(-1.0)//求出哌的值;
int n,l;
double dis(point p1,point p2){//两点间距离
}
bool cmp(point p1,point p2){//按极坐标排序
}
void search(point q,int a){
}
int main(){
}
365

被折叠的 条评论
为什么被折叠?



