您的位置:首页 > 编程语言 > Go语言

HUST 1632 Sheep’s Toy I(计算几何 正方形旋转覆盖面积)

2013-12-14 13:10 337 查看
题目链接:http://acm.hust.edu.cn/problem.php?id=1632

很简单的一道几何题目,利用的知识就是初中的,推推角度之间的关系,注意点细节就OK了。

#include <string.h>
#include <algorithm>
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
const double pi = acos(-1.0);
int main(){
int i,j,k,t;
double angle,l,r,now,now1,d,th1,th2,th3,s1,s2,p,p1,pp;
scanf("%d",&t);
while(t--){
scanf("%lf%lf",&l,&angle);
angle=fabs(angle);
th1=angle/180.0*pi;
th2=45.0/180.0*pi;
th3=(180.0-45.0-angle)/180*pi;
r=sqrt(l*l/2.0);
if(angle>=90.0){
printf("%.2lf\n",pi*r*r);
continue;
}
if(angle==0.0){
printf("%.2lf\n",l*l);
continue;
}
now=r/sin(th3)*sin(th2);
now1=r-now;
p=r/sin(th3)*sin(th1);
p1=l-p;
pp=now1/p;
s1=now*r*sin(th1)/2.0;
s2=s1*pp*pp;
printf("%.2lf\n",l*l-s1*4+s2*4+4*angle/360.0*pi*r*r);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HUST algorithm