http://acm.hdu.edu.cn/showproblem.php?pid=5476
证明转载:
对上述证明中三角形相似的补充:
弦切角定理:弦切角的度数等于它所夹的弧所对的圆心角度数的一半。等于它所夹的弧的圆周角度数。
如图:AC是⊙O的切线,PQ为⊙O的弦,∴弦切角∠ACP=∠PQC=1/2∠COP
证明:由图可知:OP=OC ∴∠OPC=∠OCP=1/2(180°-∠POC)=91°-∠AQC
∴∠AQC=90°-∠OCP=∠ACP
推论
1.任意凸四边形ABCD,必有AC·BD≤AB·CD+AD·BC,当且仅当ABCD四点共圆时取等号。
2.托勒密定理的逆定理同样成立:一个凸四边形两对对边乘积的和等于两条对角线的乘积,则这个凸四边形内接于一圆
#include <bits/stdc++.h>
using namespace std;
#define PI acos(-1.0)
double getdis(double x1,double y1,double x2,double y2)
{
return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
int main()
{
double xa,ya,xb,yb,xc,yc;
double ab,ac,bc;
double a,a2,r,h,ans;
int t,cas;
scanf("%d",&t);
for(cas=1;cas<=t;cas++)
{
scanf("%lf%lf%lf%lf%lf%lf",&xa,&ya,&xb,&yb,&xc,&yc);
ab=getdis(xa,ya,xb,yb);
ac=getdis(xa,ya,xc,yc);
bc=getdis(xb,yb,xc,yc);
a=acos((ab*ab+ac*ac-bc*bc)/(2.0*ab*ac));
a2=a/2.0;
r=tan(a2)*ac;
h=cos(a2)*ac;
ans=(PI-a)/(2.0*PI)*(2.0*PI*r)+h;
printf("Case #%d: %.4f\n",cas,ans);
}
return 0;
}