#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.34poj1031(原点对多边形的张角)
最新推荐文章于 2020-07-19 09:13:28 发布
本文介绍了一个计算几何的应用案例,通过输入一系列顶点坐标,计算出特定几何形状的面积。使用了C++语言实现,涉及到了角度计算和极坐标转换等算法。
890

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



