由圆上两点和半径,求圆心❤️原理与C++实现
Posted 没事就要敲代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由圆上两点和半径,求圆心❤️原理与C++实现相关的知识,希望对你有一定的参考价值。
以圆: ( x − 1 ) 2 + ( y − 2 ) 2 = 16 (x-1)^2+(y-2)^2=16 (x−1)2+(y−2)2=16 为例,输入圆上两点,返回两个圆心坐标,两个圆心关于圆上两点连线对称,输出结果如下:
->圆心1:(-2.27005, 5.31082)
->圆心2:(0.999999, 2)
1 原理
已知圆的圆心
O
(
x
0
,
y
0
)
O(x_0,y_0)
O(x0,y0),半径
r
r
r,则圆的标准方程为:
(
x
−
x
0
)
2
+
(
y
−
y
0
)
2
=
r
2
(x-x_0)^2+(y-y_0)^2=r^2
(x−x0)2+(y−y0)2=r2
随机选取圆上两个点 p 1 , p 2 p1,p2 p1,p2,结合半径 r r r,可以求得两个圆心,且两个圆心关于直线 p 1 p 2 p1p2 p1p2 对称。
以上是关于由圆上两点和半径,求圆心❤️原理与C++实现的主要内容,如果未能解决你的问题,请参考以下文章 编写一个c程序,输入圆心坐标和半径,输出圆上所有的点。急!!!
其实这就是一个简单的数学方程求解问题,将两点
p
1
(
x
1
,
y
1
)
,
p
2
(
x
2
,
y
2
)
p_1(x_1,y_1),p_2(x_2,y_2)
p1(x1,y1),p2(x2,y2) 代入圆方程得,
{
(
x
1
−
x
0
)
2
+
(
y
1
−
y
0
)
2
=
r
2
(
x
2
−
x
0
)
2
+
(
y
2
−
y
0
)
2
=
r
2
\\begin{cases} (x_1-x_0)^2+(y_1-y_0)^2=r^2\\\\ (x_2-x_0)^2+(y_2-y_0)^2=r^2\\\\ \\end{cases}
{(x1−x0)2+(y1−y0)2=r2(x2−x0)2+(y2−y0)2=r2
两式相减得,
x
1
2
−
x
2
2
+
y
1
2
−
y
2
2
+
2
x
0
(
x
2
−
x
1
)
+
2
y
0
(
y
2
−
y
1
)
=
0
x_1^2-x_2^2+y_1^2-y_2^2+2x_0(x_2-x_1)+2y_0(y_2-y_1)=0
x12−x22+y12−y22+2x0(x2−x1)+2y0(y2−y1)=0
易得,
x
0
=
x
2
2
−
x
1
2
+
y
2
2
−
y
1
2
−
2
y
0
(
y
2
−
y
1
)
2
(
x
2
−
x
1
)
=
x
2
2
−
x
1
2
+
y
2
2
−
y
1
2
2
(
x
2
−
x
1
)
−
y
2
−
y
1
x
2
−
x
1
y
0
x_0=\\cfrac{x_2^2-x_1^2+y_2^2-y_1^2-2y_0(y_2-y_1)}{2(x_2-x_1)}=\\cfrac{x_2^2-x_1^2+y_2^2-y_1^2}{2(x_2-x_1)}-\\cfrac{y_2-y_1}{x_2-x_1}y_0
x0=2(x2−x1)x22−x12+y22−y12−2y0(y2−y1)=2(x2−x1)x22−x12+y22−y12−x2−x1y2−y1y0
令
t
1
=
x
2
2
−
x
1
2
+
y
2
2
−
y
1