请教!!!谢谢诸位!!!!!
最好具体点!!!
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的两条边,过边的中点做垂线,相交的点就是圆心了吧?
随便找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)
随手写的,不知道有没错
这些加起来就可以得到了
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
C++练习:已知三点,求过这三点的圆
http://blog.csdn.net/xmxoxo/archive/2006/11/08/1373536.aspx
#8
1、判断三点不在一条直线上。(既任意两点组成的直线的斜率不能相等,这个很容易实现)
2、圆心到三点的距离肯定相同,列方程,解出X,Y的表达式,带入x1,y1,x2,y2,x3,y3,解出。
2、圆心到三点的距离肯定相同,列方程,解出X,Y的表达式,带入x1,y1,x2,y2,x3,y3,解出。
#1
看你的printf(),x,y,r 应都为浮点数,而浮点的“==”判断这么写会有问题。
#2
这三点连成一个三角形A
随便找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)
随手写的,不知道有没错
这些加起来就可以得到了
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
C++练习:已知三点,求过这三点的圆
http://blog.csdn.net/xmxoxo/archive/2006/11/08/1373536.aspx
#8
1、判断三点不在一条直线上。(既任意两点组成的直线的斜率不能相等,这个很容易实现)
2、圆心到三点的距离肯定相同,列方程,解出X,Y的表达式,带入x1,y1,x2,y2,x3,y3,解出。
2、圆心到三点的距离肯定相同,列方程,解出X,Y的表达式,带入x1,y1,x2,y2,x3,y3,解出。