POJ 1329 Circle Through Three Points (三角形外心)

版权声明:欢迎神犇指教 https://blog.csdn.net/sdxtcqs/article/details/87969905

http://poj.org/problem?id=1329
题意:给出三个点的坐标,求经过这三个点的圆的方程的标准式及一般式。

蛮智障的一个题,输出各种空格正负号格式,三角形外心套板子就行了。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
const double eps=1e-8;
const double PI=acos(-1.0);

int sgn(double x)
{
	if(fabs(x)>eps) return 0;
	if(x<0) return -1;
	if(x>0) return 1;
}
struct Point
{
	double x,y;
	Point(){}
	Point(double _x,double _y)
	{
		x=_x;y=_y;
	}
	//向量减法
	Point operator -(const Point &b)const
	{
		return Point(x-b.x,y-b.y);
	}
	//向量叉积
	double operator ^(const Point &b)const
	{
		return x*b.y-y*b.x;
	}
	//向量点积
	double operator *(const Point &b)const
	{
		return x*b.x+y*b.y;
	}
	//绕原点旋转角度B(弧度制),后x,y的变化
	void transXY(double B)
	{
		double tx=x,ty=y;
		x=tx*cos(B)-ty*sin(B);
		y=tx*sin(B)+ty*cos(B);
	}
};
double dist(Point a,Point b)
{
	return sqrt((a-b)*(a-b));
}
Point waixin(Point a,Point b,Point c)
{
	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;
	return Point(a.x+(c1*b2-c2*b1)/d,a.y+(a1*c2-a2*c1)/d);
}

int main()
{
    double x1,y1,x2,y2,x3,y3;
    while(scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF)
    {
        Point p=waixin(Point(x1,y1),Point(x2,y2),Point(x3,y3));
        double r=dist(Point(x1,y1),p);
        printf("(x ");
        if(p.x>0) printf("- %.3lf)^2 + (y ",p.x);
        else printf("+ %.3lf)^2 + (y ",fabs(p.x));
        if(p.y>0) printf("- %.3lf)^2 = ",p.y);
        else printf("+ %.3lf)^2 = ",fabs(p.y));
        printf("%.3lf^2\n",r);
        printf("x^2 + y^2 ");
        if(p.x>0) printf("- %.3lfx ",2*p.x);
        else printf("+ %.3lfx ",2*fabs(p.x));
        if(p.y>0) printf("- %.3lfy ",2*p.y);
        else printf("+ %.3lfy ",2*fabs(p.y));
        if(p.x*p.x+p.y*p.y-r*r<0) printf("- %.3lf = 0\n\n",fabs(p.x*p.x+p.y*p.y-r*r));
        else printf("+ %.3lf = 0\n\n",p.x*p.x+p.y*p.y-r*r);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/sdxtcqs/article/details/87969905