#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <cmath>
#include <queue>
#define ll long long
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#define PI acos(-1.0)
using namespace std;
struct node
{
double x,y;
}p[1005];
int n;
double h,k;
double get(node a,node b)
{
double an1=atan2(a.y,a.x),an2=atan2(b.y,b.x);
if(an1-an2>PI) an2+=2*PI;
if(an2-an1>PI) an1+=2*PI;
return an1-an2;
}
int main()
{
scanf("%lf%lf%d",&k,&h,&n);
for(int i=0;i<n;i++)//按照逆时针或者顺时针输入顶点
scanf("%lf%lf",&p[i].x,&p[i].y);
double mi=0,ma=0,sum=0;
p[n]=p[0];
for(int i=0;i<n;i++)
{
sum+=get(p[i],p[i+1]);
ma=max(sum,ma);
mi=min(sum,mi);
if(ma-mi>2*PI)
{
ma=mi+2*PI;
break;
}
}
printf("%.2f\n",(ma-mi)*k*h);
}
//0.5 1.7 3
//1.0 3.0
//2.0 -1.0
//-4.0 -1.0
//5.34
poj1031(原点对多边形的张角)
最新推荐文章于 2019-09-21 00:52:51 发布