已知三点 要求圆心坐标和圆的半径 怎么用c语言来实现????

时间:2022-09-19 09:45:38
问题 如 标题所示!!!
请教!!!谢谢诸位!!!!!
最好具体点!!!
if((x1-x)*(x1-x)+(y1-y)*(y1-y)==r*r)
{
    printf("执行了第一层判断!\n");
    if((d[i][0]-x)*(d[i][0]-x)+(d[i][1]-y)*(d[i][1]-y)==r*r)
    {
        printf("执行了第二层判断!\n");
        if((x2-x)*(x2-x)+(y2-y)*(y2-y)==r*r)
        {
            printf("执行了第三层判断!\n");
            printf("三点确定的圆心和半径!\n");
            printf("%f %f\n%f",x,y,r);
        }
     }
}
printf("未执行判断!\n");

x1 y1 x2 y2 还有d[i][0] d[i][1]都已知!!!!
但是程序不执行?????

8 个解决方案

#1


看你的printf(),x,y,r 应都为浮点数,而浮点的“==”判断这么写会有问题。

#2


这三点连成一个三角形A
随便找A的两条边,过边的中点做垂线,相交的点就是圆心了吧?

#3


不知道直接用手算出公式再 cout 行不行

#4


两条直线
y1=ax+b
y2=cx+d
求交点
a<>c时有交点(不平行)
y1=y2时
=> ax+b=cx+d
=> x=(d-b)/(a-c)

x1=x2 时
y=(ad-cb)/(a-c)

交点坐标是( (d-b)/(a-c),(ad-cb)/(a-c))
-------------------------------------
直线Y=ax+b 与X轴夹角是
argtg((-b)/a)
转90度只要加上90度(3.14/2)就可以了
-------------------------------------
另,两点(x1,y1),(x2,y2)的连线方程表示成Y=ax+b
a=(y1-y2)/(x1-x2)

b= y2 - x2*a
或者
b= y1- x1*a
---------------------------------
两点(x1,y1),(x2,y2)的连线中点坐标

((x1+x2)/2,(y1+y2)/2)

随手写的,不知道有没错
这些加起来就可以得到了

#5


书上有例子,"常用C程序算法",搜.

#6


解园方程..

#7


当作练习写了一下,发在这里:

C++练习:已知三点,求过这三点的圆
http://blog.csdn.net/xmxoxo/archive/2006/11/08/1373536.aspx

#8


1、判断三点不在一条直线上。(既任意两点组成的直线的斜率不能相等,这个很容易实现)
2、圆心到三点的距离肯定相同,列方程,解出X,Y的表达式,带入x1,y1,x2,y2,x3,y3,解出。

#1


看你的printf(),x,y,r 应都为浮点数,而浮点的“==”判断这么写会有问题。

#2


这三点连成一个三角形A
随便找A的两条边,过边的中点做垂线,相交的点就是圆心了吧?

#3


不知道直接用手算出公式再 cout 行不行

#4


两条直线
y1=ax+b
y2=cx+d
求交点
a<>c时有交点(不平行)
y1=y2时
=> ax+b=cx+d
=> x=(d-b)/(a-c)

x1=x2 时
y=(ad-cb)/(a-c)

交点坐标是( (d-b)/(a-c),(ad-cb)/(a-c))
-------------------------------------
直线Y=ax+b 与X轴夹角是
argtg((-b)/a)
转90度只要加上90度(3.14/2)就可以了
-------------------------------------
另,两点(x1,y1),(x2,y2)的连线方程表示成Y=ax+b
a=(y1-y2)/(x1-x2)

b= y2 - x2*a
或者
b= y1- x1*a
---------------------------------
两点(x1,y1),(x2,y2)的连线中点坐标

((x1+x2)/2,(y1+y2)/2)

随手写的,不知道有没错
这些加起来就可以得到了

#5


书上有例子,"常用C程序算法",搜.

#6


解园方程..

#7


当作练习写了一下,发在这里:

C++练习:已知三点,求过这三点的圆
http://blog.csdn.net/xmxoxo/archive/2006/11/08/1373536.aspx

#8


1、判断三点不在一条直线上。(既任意两点组成的直线的斜率不能相等,这个很容易实现)
2、圆心到三点的距离肯定相同,列方程,解出X,Y的表达式,带入x1,y1,x2,y2,x3,y3,解出。