牛客等级之题N2(8.18场)Audio 题解

已知三点求圆心坐标:(关注自媒体 Grand Theft Algorithm,回复01送算法大礼包)

#include <bits/stdc++.h>
using namespace std;

//常数
double const pai = 3.1415926535897932384626;

//坐标点结构
struct point
{
    
    
    double x;    //横坐标
    double y;    //纵坐标
};

//直线方程结构
struct line
{
    
    
    double k;    //斜率
    double b;    //截距
};

//求两点距离
double dist(point p1,point p2)
{
    
    
    double ret=0;
    ret=sqrt((p1.x-p2.x)*(p1.x-p2.x)+ (p1.y-p2.y)*(p1.y-p2.y));
    return ret;
}


/*
已知两点,求连线中点坐标
---------------------------------
两点(x1,y1),(x2,y2)的连线中点坐标
((x1+x2)/2,(y1+y2)/2)
*/
point midpoint(point p1, point p2)
{
    
    
    point ret;
    ret.x = (p1.x + p2.x )/2;
    ret.y = (p1.y + p2.y )/2;
    return ret;
}

/*
已知两点,求连线方程
-------------------------------------
两点(x1,y1),(x2,y2)的连线方程表示成Y=ax+b
a=(y1-y2)/(x1-x2)

b= y2 - x2*a
或者
b= y1- x1*a
-------------------------------------

*/
line line2p(point p1,point p2)
{
    
    
    line ret;
    if ((p1.x==p2.x) && (p1.y = p2.y))
    {
    
    
        ret.k = 0;
        ret.b = 0;
    }
    else
    {
    
    
        ret.k = (p1.y - p2.y)/ (p1.x -p2.x);
        ret.b = p1.y - p1.x * ret.k ;
    }
    return ret;
}

point crosspoint(line l1,line l2)
{
    
    
    point ret;
    ret.x = (l2.b-l1.b ) / (l1.k - l2.k);
    ret.y = (l1.k*l2.b-l2.k*l1.b)/(l1.k-l2.k);
    return ret;
}

line linepoint(point p,double k,double n) //过某点直线方程
{
    
    
    line ret;
    ret.k = tan(atan(k)+n);
    ret.b = p.y -  ret.k * p.x ;
    return ret;
}

point p1,p2,p3;
point m1,m2,m3;
line l1,l2,l3;
line lm1,lm2,lm3;
point circlep;
double circler,dis2,dis3;

int main()
{
    
    
        cin>>p1.x>>p1.y;
        cin>>p2.x>>p2.y;
        cin>>p3.x>>p3.y;

        m1=midpoint(p1,p2);
        m2=midpoint(p2,p3);

        l1=line2p(p1,p2);
        l2=line2p(p2,p3);
       
        lm1=linepoint(m1,l1.k,pai/2);
        lm2=linepoint(m2,l2.k,pai/2);
        circlep=crosspoint(lm1,lm2);

        printf("%.3lf %.3lf", circlep.x, circlep.y);



    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42396397/article/details/108068898