已知兩點座標和半徑,求圓心

2021-08-18 12:32:58 字數 1304 閱讀 3071

已知圓上的兩點座標和半徑,求圓心。

數學分析:這個題目,涉及到簡單的數學問題,但是計算比較繁瑣。

假設已知圓上的兩點座標分別為n(x1,y1)和m(x2,y2),半徑為r,圓心座標為o(a,b),根據數學知識可得到:

(x1-a)^2 + (y1-b)^2 = r^2----(1)式

(x2-a)^2 + (y2-b)^2 = r^2----(2)式

分別展開上述兩個式子得到

(x1)^2 - 2*x1*a + a^2 + (y1)^2 - 2*y1*b + b^2 = r^2 ----(3)式

(x2)^2 - 2*x2*a + a^2 + (y2)^2 - 2*y2*b + b^2 = r^2 ----(4)式

(3)式 - (4)式

得到:x1^2 - x2^2 + 2*(x2-x1)*a + y1^2 - y2^2 + 2*(y2-y1)*b = 0

變形得到:

a = (x2^2 - x1^2 + y2^2 - y1^2)/2/(x2-x1) - (y2-y1)/(x2-x1) * b

設:c1 = (x2^2 - x1^2 + y2^2 - y1^2)/2/(x2-x1)

設:c2 = (y2-y1)/(x2-x1)

a = c1 - c2 * b ----(5)式

把(5)式代入(1)式,得到;

x1^2 - 2*x1*(c1-c2*b) + (c1-c2*b)^2 + y1^2 -2*y1*b + b^2 = r^2

展開簡化為關於b的一元二次方程一般形式;

(c2^2+1)*b^2 + (2*x1*c1-2*c1*c2-2*y1)*b + x1^2-2*x1*c1+c1^2+y1^2-r^2 = 0

得到求b的方程組

二次項係數:a = (c2^2+1)

一次項係數

:b = (2*x1*c1-2*c1*c2-2*y1)

常數項: c = x1^2-2*x1*c1+c1^2+y1^2-r^2

一元二次方程轉化為:

a*b^2 + b*b + c = 0 ----(6)式

解得b = (-b + sqrt(b*b - 4 * a*c)) / (2 * a); (或b = (-b - sqrt(b*b - 4 * a*c)) / (2 * a))

代入(5)式得a的值;

void circlecenter(double x1,double y1,double x2,double y2,double r,double &x,double &y)  

已知兩點座標和半徑求圓心座標程式C

已知圓上的兩點座標和半徑,求圓心。數學分析 這個題目,涉及到簡單的數學問題,但是計算比較繁瑣。假設已知圓上的兩點座標分別為n x1,y1 和m x2,y2 半徑為r,圓心座標為o a,b 根據數學知識可得到 x1 a 2 y1 b 2 r 2 1 式 x2 a 2 y2 b 2 r 2 2 式 分別...

C 已知兩點及半徑,求圓心座標

已知a點和b點及半徑,其中b點為所在圓的切點,求該圓心座標 float radius 半徑 float angleo 圓心角 vector3 m yuanxin 圓心座標 計算圓心座標 a點 第一點 b點 第二點,即切點 半徑 void calculateo listve else if ve 0 ...

筆記 已知圓上兩點座標和半徑,求圓心

參考了一下這個博主的部落格 已知兩點座標 x1,y1 x2,y2 和半徑r,求圓心座標 x0,y0 程式設計驗證演算法 具體例子 已知 2,4 4,2 半徑r 2,求圓心 include stdafx.h include include using namespace std void circle...