将三个圆的圆心连接起来 ,就可以发现要求的面积是大三角形减去三个小扇形。
需用到两个公式: 海伦公式 + 余弦定理
海伦公式:
已知三边 a , b , c 求三角形面积,
海伦公式为:S=√[p(p-a)(p-b)(p-c)]
公式里的p为半周长:p=(a+b+c)/2
扇形面积 :
S = 0.5 * r * r * angle ( angle为弧度制的角度
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
double r1,r2,r3;
double sector( double a,double b,double c,double r)
{
//余弦定理 cos A=(b²+c²-a²)/2bc
double angle = acos( ( b*b + c*c - a*a) / ( 2*b*c ));
return r*r*angle*0.5;
}
int main()
{
int n;
double a, b, c;
// 12 13 23
cin>>n;
while( n-- )
{
cin>>r1>>r2>>r3;
double area = 0.0,p;
a = r1 + r2;
b = r1 + r3;
c = r2 + r3;
p = ( a+b+c ) * 0.5;
area = sqrt( p * (p-a) * (p-b) * (p-c) );
area = area - sector(a,b,c,r3) - sector(c,b,a,r1)-sector(b,a,c,r2);
printf("%.6lf\n",area);
}
return 0;
}