求矩形与圆的公共面积。矩形与圆同中心。
用了余弦定理,会错不懂为什么。感觉范围没超啊。。。改成反正弦就好了。
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const double PI = acos(-1.0);
bool dd(double a,double b)
{
return fabs(a-b)<1e-6;
}
int main()
{
double l,r;
while(cin>>l>>r)
{
double half = l*0.5;
double slope = sqrt(half*half*2.0);
if( r<half || dd(r,half))
{
printf("%.3lf\n",r*r*PI);
}
else if( slope < r || dd(slope,r))
{
printf("%.3lf\n",l*l);
}
else
{
double c = sqrt( r*r - half*half);
double ang = asin(c/r);
double s = r * r* ang ;
s -= c * half;
printf("%.3lf\n",r*r*PI-s*4.0);
}
}
return 0;
}