24小时热门版块排行榜    

查看: 1151  |  回复: 16
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

woxiangfei

木虫 (文坛精英)

[交流] 【求助】50个金币求一特小程序

请那位高手给编个小程序,就是计算一个三角形中点,即:已知三角形的三个顶点坐标,求三角形中的到这三点的距离相等的点的坐标。兄弟急用呀。

[ Last edited by csfn on 2008-12-29 at 20:19 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

alwens

铁杆木虫 (正式写手)

老木虫

附件是编译好的程序,再发一份到你的邮箱
包括z坐标的跟上述方法基本类同,不过还要改写不少,
如果hitian88有现成的程序请让他提供吧,
再请版主分一半金币给他:)
万里夕阳锦背高 翻身犹恨东洋小 太公怎钓?
13楼2008-01-09 16:20:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 17 个回答

alwens

铁杆木虫 (正式写手)

老木虫

不支持上传,告诉我邮箱。

[ Last edited by alwens on 2008-1-7 at 14:25 ]
万里夕阳锦背高 翻身犹恨东洋小 太公怎钓?
2楼2008-01-07 14:10:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

alwens

铁杆木虫 (正式写手)

老木虫

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
csfn(金币+50,VIP+0):应楼主的要求奖励,希望继续提供帮助
一般的思路是:
1、先判断三点能否构成一个圆,具体来说就是看其中一点是否在另外两点连成的直线上,三点共线的话就输出“error”;
2、如果三点不共线,接下来就是求圆心,即三点构成的三角形的其中两边的垂直平分线交点;
3、最后随便找一点与圆心即可求出半径。

    实际上用两条弦的垂直平分线的交点确定圆心的方法并不好,理由如下:
假设现在假设三点为(x1,y1),(x2,y2),(x3,y3),求它们的中垂线要使用的点斜式,这样一来,要考虑的情况比较多:
1.(x1,y1),(x2,y2)连线和(x2,y2),(x3,y3)连线的斜率为0和无穷大都要考虑,二者组合就是4种,再加上某一连线斜率为0或无穷大,而另一斜线斜率不为0和无穷大,考虑的情况更多了。

     一个更为简单的方法是首先判断三点是否一线,这里分为两种情况:

1.三点连成的直线没有斜率,判断条件(y1==y2)&&(y2==y3)

2.判断任意两点连成的直线斜率是否相等。

3.解方程组,设圆心坐标为(x,y)

圆心到任意两点的距离相等,由此求出x,y的表达式,代入程序。

4.求出圆心,半径迎刃而解。

   
    下面是我的源程序,在vc6.0编译通过。

#include
#include

int main()
{
    int x1,y1,x3,y3;
    double a,b,c,d,e,f;
    double r,k1,k2,x,y,x2,y2;
    cout<<"请输入x1,y1,x2,y2,x3,y3"<     cin>>x1>>y1>>x2>>y2>>x3>>y3;
    if((y1==y2)&&(y2==y3))
{
    cout<<"三点不构成圆!"<     return 0;
}
    if((y1!=y2)&&(y2!=y3))
{
    k1=(x2-x1)/(y2-y1);
    k2=(x3-x2)/(y3-y2);
}
    if(k1==k2)
{
    cout<<"三点不构成圆!"<     return 0;
}
    a=2*(x2-x1);
    b=2*(y2-y1);
    c=x2*x2+y2*y2-x1*x1-y1*y1;
    d=2*(x3-x2);
    e=2*(y3-y2);
    f=x3*x3+y3*y3-x2*x2-y2*y2;
    x=(b*f-e*c)/(b*d-e*a);
    y=(d*c-a*f)/(b*d-e*a);
    cout<<"圆心为("<"<     r=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
    cout<<"半径为"<     return 0;
}





引用地址:http://blog.programfan.com/trackback.asp?id=4540

[ Last edited by alwens on 2008-1-7 at 14:36 ]
万里夕阳锦背高 翻身犹恨东洋小 太公怎钓?
3楼2008-01-07 14:35:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyy816

至尊木虫 (著名写手)


csfn(金币+1,VIP+0):thanks,欢迎提供帮助~
另外一个供参考思路:
1.判断是否是三角形
2.写出任意两边角平分线方程,交点就是圆心座标,交点到任意一边距离就是半径
4楼2008-01-07 15:59:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见