已知圓上的兩點座標和半徑,求圓心。數學分析:這個題目,涉及到簡單的數學問題,但是計算比較繁瑣。
假設已知圓上的兩點座標分別為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的方程組常數項: c = x1^2-2*x1*c1+c1^2+y1^2-r^2二次項係數:a = (c2^2+1)
一次項係數
:b = (2*x1*c1-2*c1*c2-2*y1)
一元二次方程轉化為:
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...