34 lines
900 B
C++
34 lines
900 B
C++
#include<cstdio>
|
|
#include<cmath>
|
|
struct Point
|
|
{ double x, y; };
|
|
Point A,B,C,I;
|
|
inline double get_dis(Point p1,Point p2)
|
|
{ return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)); }
|
|
double a,b,c,s,r,IA,IB,IC,r1,r2,r3;
|
|
int main()
|
|
{
|
|
#ifdef local
|
|
freopen("pro.in","r",stdin);
|
|
#endif
|
|
while(scanf("%lf%lf%lf%lf%lf%lf",&A.x,&A.y,&B.x,&B.y,&C.x,&C.y)==6)
|
|
{
|
|
if(A.x==0&&A.y==0&&B.x==0&&B.y==0&&C.x==0&&C.y==0) break;
|
|
a=get_dis(B,C);
|
|
b=get_dis(A,C);
|
|
c=get_dis(A,B);
|
|
s=(a+b+c)/2;
|
|
I.x=(a*A.x+b*B.x+c*C.x)/(a+b+c);
|
|
I.y=(a*A.y+b*B.y+c*C.y)/(a+b+c);
|
|
r=sqrt((s-a)*(s-b)*(s-c)/s);
|
|
IA=get_dis(A,I);
|
|
IB=get_dis(B,I);
|
|
IC=get_dis(C,I);
|
|
r1=r/(2*(s-a))*(s-r+IA-IB-IC);
|
|
r2=r/(2*(s-b))*(s-r+IB-IA-IC);
|
|
r3=r/(2*(s-c))*(s-r+IC-IA-IB);
|
|
printf("%.6lf %.6lf %.6lf\n",r1,r2,r3);
|
|
}
|
|
return 0;
|
|
}
|