模板。。存起来~~
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;
struct P
{
double x,y;
};
struct circl
{
P r;
double R;
}ci;
P a,b,c;
double sa,sb,sc,sp;
double dis(P a,P b)
{
double c=(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
return sqrt(c);
}
double area()
{
sa=dis(a,b);
sb=dis(a,c);
sc=dis(b,c);
sp=sa+sb+sc;
sp/=2;
return sqrt(sp*(sp-sa)*(sp-sb)*(sp-sc));
}
void cy(P a,P b,P c)
{
double aaa=area();
double xa,xb,xc,ya,yb,yc;
ci.R=sa*sb*sc/aaa/4;
double a1=b.x-a.x,b1=b.y-a.y,c1=(a1*a1+b1*b1)/2;
double a2=c.x-a.x,b2=c.y-a.y,c2=(a2*a2+b2*b2)/2;
double d=a1*b2-a2*b1;
ci.r.x=a.x+(c1*b2-c2*b1)/d;
ci.r.y=a.y+(a1*c2-a2*c1)/d;
}
int main()
{
int step=1;
while(~scanf("%lf%lf%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y))
{
if(!step)
printf("\n");
step=0;
cy(a,b,c);
printf("(x ");
if(ci.r.x<0)
printf("+ %.3lf)^2 + (y ",fabs(ci.r.x));
else
printf("- %.3lf)^2 + (y ",fabs(ci.r.x));
if(ci.r.y<0)
printf("+ %.3lf)^2 = %.3lf^2",fabs(ci.r.y),ci.R);
else
printf("- %.3lf)^2 = %.3lf^2",fabs(ci.r.y),ci.R);
printf("\n");
if(ci.r.x>0)
printf("x^2 + y^2 - %.3lfx",ci.r.x*2);
else
printf("x^2 + y^2 + %.3lfx",-ci.r.x*2);
if(ci.r.y>0)
printf(" - %.3lfy",ci.r.y*2);
else
printf(" + %.3lfy",-ci.r.y*2);
double ll=ci.r.x*ci.r.x+ci.r.y*ci.r.y-ci.R*ci.R;
if(ll>0)
printf(" + %.3lf = 0\n",ll);
else
printf(" - %.3lf = 0\n",-ll);
}
return 0;
}