题目链接:http://poj.org/problem?id=1329
给出三个点,求外接圆的两种表达式:
//代码如下:
#include<iostream>
#include<cstdio>
#include<math.h>
#define eps 1e-8
struct point{double x,y;};
point a,b,c;
double distance(point p1,point p2)
{
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
point intersection(point p1,point p2,point p3,point p4)
{
point ret=p1;
double t=((p1.x-p3.x)*(p3.y-p4.y)-(p1.y-p3.y)*(p3.x-p4.x))
/((p1.x-p2.x)*(p3.y-p4.y)-(p1.y-p2.y)*(p3.x-p4.x));
ret.x+=(p2.x-p1.x)*t;
ret.y+=(p2.y-p1.y)*t;
return ret;
}
point circenter(point a,point b,point c)//Èý½ÇÐÎÍâ½ÓÔ²ÐÄ
{
point p1,p2,p3,p4;
p1.x=(a.x+b.x)/2.0;
p1.y=(a.y+b.y)/2.0;
p2.x=p1.x-(b.y-a.y);
p2.y=p1.y+(b.x-a.x);
p3.x=(a.x+c.x)/2.0;
p3.y=(a.y+c.y)/2.0;
p4.x=p3.x-(c.y-a.y);
p4.y=p3.y+(c.x-a.x);
return intersection(p1,p2,p3,p4);
}
int main()
{
while(~scanf("%lf%lf%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y))
{
point cen=circenter(a,b,c);
double dis=distance(cen,a);
printf("(x %c %.3lf)^2 + (y %c %.3lf)^2 = %.3lf^2\n",(cen.x>=0 ?'-':'+'),fabs(cen.x),(cen.y>=0 ?'-':'+'),fabs(cen.y),dis);
printf("x^2 + y^2 %c %.3lfx %c %.3lfy %c %.3lf = 0\n",
(cen.x>=0 ?'-':'+'), 2*fabs(cen.x), (cen.y>=0 ?'-':'+'),2*fabs(cen.y),(cen.x*cen.x+cen.y*cen.y-dis*dis>=0 ? '+':'-'),fabs(cen.x*cen.x+cen.y*cen.y-dis*dis));
printf("\n");
}
return 0;
}
分享到:
相关推荐
poj 2403 Hay Points.md
POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类
北大POJ水题整合包 解题报告+AC代码
poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题...
POJ水题集-----50道左右-----增加自信啊..
poj部分水题代码描述,为初学者提供一些必要的基础
北大 POJ的水题解答C++版,请合理使用
POJ第1861题源码 POJ第1861题源码 POJ第1861题源码
poj分类poj分类poj分类poj分类
北大POJ1159-Palindrome 解题报告+AC代码
poj 3414解题报告poj 3414解题报告poj 3414解题报告poj 3414解题报告
poj 1012解题报告poj 1012解题报告poj 1012解题报告poj 1012解题报告
poj 2329解题报告poj 2329解题报告poj 2329解题报告poj 2329解题报告
poj 1659解题报告poj 1659解题报告poj 1659解题报告poj 1659解题报告
C语言 poj npu 西工大 C语言Poj答案全完整打包,给有需要的朋友
POJ1503解答 POJ1503解答,正确答案(已通过POJ)
poj 百练 题目分类 poj 百练 题目分类
POJ1083的代码,POJ1083的代码,POJ1083的代码
POJ1048,加强版的约瑟夫问题 难度中等
北大POJ2002-Squares 解题报告+AC代码