#include <stdio.h>
#include <cmath>
#include<iomanip>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
#define PI acos(-1.0)
struct point
{
double x,y;
}a[50];
double zj(point l,point w)重点,理解方式首先用atan2求到原点的张角,+x为0,-x为3.1415926;顺时针记作maxn,逆时针记作minx,sum只有三种情况,其实是有三种,
题目已经申明点不在直线上,所以之中俩种,0和2*PI
{
double aa=atan2(l.y,l.x);
double b=atan2(w.y,w.x);
if(aa-b>PI)b+=PI*2;//
if(b-aa>PI)aa+=PI*2;
return aa-b;
}
double minx,maxn,sum;
int main()
{
int n;
// printf("%lf\n",PI);
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%lf%lf",&a[i].x,&a[i].y);
a[n]=a[0];
sum=maxn=minx=0;
for(int i=0;i<n;i++)
{
sum+=zj(a[i],a[i+1]);
printf("%lf\n",sum);
if(sum>maxn)
maxn=sum;
if(sum<minx)
minx=sum;
if(maxn-minx>=2.0*PI)当角度大于360,直接跳出
{
maxn=2*PI+minx;
// minx=0;
break;
}
}
printf("%lf\n",maxn-minx);
}