当前位置:你问我答 >  详情

【分享】已知圆上三点求圆心与半径

数学问题:

就是解三元二次方程组!

X,Y,R为未知数,x1,y1,x2,y2,x3,y3为常数
(x1-X)²-(y1-Y)²=R²      (1)

(x2-X)²-(y2-Y)²=R²      (2)

(x3-X)²-(y3-Y)²=R²      (3)

(1)-(2),
就是左边减左边,右边减右边,得到
x1²-2Xx1+X²-(y1²-2Yy1+Y²)-(x2²-2Xx2+X²)+(y2²-2Yy2+Y²)=R²-R²
整理得
x1²+y2²-y1²-x2²+2Xx2-2Xx1+2Yy1-2Yy2=0
(2)-(1)
整理得:
x2²+y3²-y2²-x3²+2Xx3-2Xx2+2Yy2-2Yy3=0
再整理上面两式得

(2x2-2x1)X+(2y1-2y2)Y=y1²+x2²-x1²-y2²
(2x3-2x2)X+(2y2-2y3)Y=y2²+x3²-x2²-y3²

程序问题:

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);
r=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));

其中:变量和常量都为双精度型(double)

全部评论

等级:LV5
积分:3680
新手381613 2021-01-31 15:55
学习
回复 0
等级:LV30
积分:114517
花好月圆人寿 2021-01-31 22:39
谢谢分享
回复 0
等级:LV30
积分:466
shq976 2021-02-01 07:10
谢谢
回复 0
等级:LV28
积分:105792
Peter 2021-02-01 07:28
点赞
回复 0
等级:LV28
积分:24826
知足常乐 2021-02-01 07:33
这个分享好
回复 0
等级:LV1
积分:125
迷幻 2021-02-01 08:01
很实用啊
回复 0
等级:LV30
积分:650
兵哥哥 2021-02-01 08:23
学习
回复 0
等级:LV13
积分:110
我有一個大粽子 2021-02-01 16:56
lihai
回复 0
等级:LV26
积分:13982
晨曦1 2021-02-04 00:09
比不过cad一个命令
回复 0
AcadApp你不懂,朕不怪你
2021-02-04 08:01:53
等级:LV30
积分:8112
跑杆小王子 2021-02-04 17:50
学习
回复 0
1

提交
悬赏回复规则
1、悬赏期为24小时,从发布时间起算;
2、悬赏期内提问者如设置评论为“精选评论”,视为悬赏结束,该精选评论人将获得本题全部悬赏积分;
3、悬赏期内如提问者未设置“精选评论”,则前5位评论者平分悬赏积分(如仅有一位评论,该评论者获得50%悬赏积分);
4、悬赏积分会自动发放到生态圈账户中,请留意站内信通知。
知道了

距离打开宝箱还剩7

是否花费200积分补签?
确认
取消