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

2021-08-08 19:31:25 字數 1970 閱讀 3360

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

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

假設已知圓上的兩點座標分別為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-x2) * b

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

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

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

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

#include

#include

#include

using

namespace

std;

ofstream fout;

typedef

struct

point;

double y_coordinates(double x,double y,double k,double x0);//

4個引數

void circle_center(point p1,point p2,double

dradius);

bool data_validation(point p1,point p2,double

dradius);

void readdata(point &p1,point &p2,double &dradius);

void

main()

void circle_center(point p1,point p2,double

dradius)

else

fout

<< center1.x << "

"<< center1.y

<< center2.x << "

"<< center2.y <}double y_coordinates(double x,double y,double k,double

x0)bool data_validation(point p1,point p2,double

dradius)

if((2 * dradius) >=ddistance)

return

true

;

else

}void readdata(point &p1,point &p2,double &dradius)

}

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

已知圓上的兩點座標和半徑,求圓心。數學分析 這個題目,涉及到簡單的數學問題,但是計算比較繁瑣。假設已知圓上的兩點座標分別為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...