double x1 = 2;
double y1= 0;
double x2 = 0;
double y2 = 0;
double x3 = 1;
double y3 = 1;
//避免两点相同
if(abs(x1-x2)<0.01 && abs(y1-y2)<0.01)
{
return;
}
if(abs(x1-x3)<0.01 && abs(y1-y3)<0.01)
{
return;
}
if(abs(x2-x3)<0.01 && abs(y2-y3)<0.01)
{
return;
}
double centerX;
double centerY;
double k1=0;
double k2=0 ;
double u=0;
double v =0;
// 直线方程AX+BY=C,判断点(x3,y3)是否在直线上
double A=(y2-y1);
double B=(x1-x2);
double C=(x1*y2-y1*x2);
double C1=A*x3+B*y3;
if(C==C1)
{
return ;
}
///
if(x1==x2)
{
x1=x1+0.000001;
}
if(x1==x3)
{
x1=x1+0.000001;
}
u = (x1*x1 - x2*x2 + y1*y1 - y2*y2)/(2*x1 -2*x2);
v= (x1*x1 - x3*x3 + y1*y1 - y3*y3)/(2*x1 -2*x3);
k1 = (y1-y2)/(x1-x2);
k2 = (y1-y3)/(x1-x3);
centerX = v - (u-v)*k2/(k1-k2);
centerY = (u-v)/(k1-k2);
cout<<centerX<<" , "<<centerY<<endl;
C++三点确定圆心
于 2024-06-05 14:36:41 首次发布