本文共 1555 字,大约阅读时间需要 5 分钟。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 using namespace std ;15 #ifdef DeBUG16 #define bug assert17 #else18 #define bug //19 #endif20 #define zero {0}21 #define INF 200000000022 #define EPS 1e-1023 inline int sgn(double x)//sgn函数符号判断 ,小于给定精度判零24 {25 return fabs(x) < EPS ? 0 :(x < 0 ? -1 : 1);26 }27 struct POINT28 {29 double x;30 double y;31 POINT()32 {33 }34 POINT(double a,double b):x(a),y(b)35 {36 }37 };38 double dist(POINT p,POINT r)39 {40 return sqrt((p.x-r.x)*(p.x-r.x)+(p.y-r.y)*(p.y-r.y));41 }42 bool cocircle(POINT p1,POINT p2,POINT p3,POINT &q,double &r)43 {44 double x12=p2.x-p1.x;45 double y12=p2.y-p1.y;46 double x13=p3.x-p1.x;47 double y13=p3.y-p1.y;48 double z2=x12*(p1.x+p2.x)+y12*(p1.y+p2.y);49 double z3=x13*(p1.x+p3.x)+y13*(p1.y+p3.y);50 double d=2.0*(x12*(p3.y-p2.y)-y12*(p3.x-p2.x));51 if(abs(d) >x1>>y1>>x2>>y2>>x3>>y3;72 /*73 if(sgn((x3-x1)*(y2-y1)-(y3-y1)*(x2-x1))==0)74 printf("No this position\n");75 else76 { */77 if(cocircle(POINT(x1,y1),POINT(x2,y2),POINT(x3,y3),xin,r))78 printf("%.1lf %.1lf\n",xin.x,xin.y);79 else if((x1==x2&&y1==y2)||(x1==x3&&y1==y3)||(x2==x3&&y2==y3))//知道数据了这里偷个懒呵呵,应判断两点中点 80 printf("%.1lf %.1lf\n",(x1+x2+x3)/2,(y1+y2+y3)/2);81 else82 printf("No this position\n");83 //}84 }85 return 0;86 }
转载于:https://www.cnblogs.com/Skyxj/p/3227904.html