三點共圓公式

2022-04-16 20:09:15 字數 3045 閱讀 9966

我們設乙個圓的圓心座標為

,半徑為 r 。那麼這個圓的方程可以寫為:

在這個圓上隨便取三個點,設這三個點的座標分別是

那麼有:

公式(1)(2)相減,(1)(3)相減之後經過化簡可以得到:

有唯一解的條件是係數行列式不為 0 :

簡單變變型也就是:

這樣寫幾何含義就很明顯了,三點不能共線。

設:

那麼 :

有了 x 0 和 y 0 的值後,帶入(1) 式就可以得到 r 的值。至此,三點確定圓的問題就解決了。

三點共圓求圓心的模版:

double

x, y;

struct

point

a[2005

];void solve(point a, point b, point c) //

三點共圓圓心公式

double fz1=a.x * a.x - b.x * b.x + a.y * a.y - b.y * b.y; //

edouble fz2=a.x * a.x - c.x * c.x + a.y * a.y - c.y * c.y; //

f x = (fz1 * (a.y - c.y) - fz2 * (a.y - b.y)) / fm1; //

x0 y = (fz1 * (a.x - c.x) - fz2 * (a.x - b.x)) / fm2; //

y0}

例題:boundary

題意:

給了n個點,讓你自己隨便定義圓心(圓心不要求是n個點的其中乙個)和半徑,要求這n個點有盡可能多的點在圓上,並且該圓經過座標原點(0,0)。求滿足的圓上的點最多有多少個。

想法:

由於必須經過原點,所以我們可以只列舉兩個點從而就可以達到列舉圓心的目的。【因為三點共圓】

用vector儲存下來這些圓心座標。

處理完後,對圓心座標sort一下,判斷有多少個圓心座標是一樣的。

再要尋找有幾個點在圓上,我們可以列舉圓上的點。

滿足 x * (x - 1 ) / 2 == ans 

這個時候的 x 就是我們所求的

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define ull unsigned long long

#define ls nod<<1

#define rs (nod<<1)+1

#define pii pair#define mp make_pair

#define pb push_back

#define inf 0x3f3f3f3f

#define max(a, b) (a>b?a:b)

#define min(a, b) (aconst

double eps = 1e-8

;const

int maxn = 2e5 + 10

;const ll mod = 99999999999999

;const

int mlog=20

;int sgn(double a)

using

namespace

std;

double

x, y;

struct

point

a[2005

];void solve(point a, point b, point c) //

三點共圓圓心公式

double fz1=a.x * a.x - b.x * b.x + a.y * a.y - b.y * b.y; //

edouble fz2=a.x * a.x - c.x * c.x + a.y * a.y - c.y * c.y; //

f x = (fz1 * (a.y - c.y) - fz2 * (a.y - b.y)) / fm1; //

x0 y = (fz1 * (a.x - c.x) - fz2 * (a.x - b.x)) / fm2; //y0}

vector

double,double>>mpp;

intmain()

, a[i], a[j]);

if (x == y && sgn(x-1e18) == 0

)

continue

; mpp.push_back();}}

if(mpp.size()==0

) sort(mpp.begin(),mpp.end());

int ma = 1

;

int num = 1

; pair

now=mpp[0

];

for(int i=1;i)

ma=max(ma,num);

}for (int i = 1; i <= n; i++)

}return0;

}

三點彎曲彈性模量怎麼計算公式 三點彎曲測試介紹

三點彎曲測試 三點彎曲簡介 1.1三點彎曲定義 三點彎曲試驗是將截面為矩形或圓形的試樣放在彎曲裝置上,調整跨距,在試樣上載入進行彎曲試驗,直到達到規定的彎曲程度或發生斷裂。1.2三點彎曲的應用 1 對需要在彎曲條件下工作的材料,測試其彎曲載荷下的力學效能,如混凝土 泡沫鋁合金 砂岩等。2 對難以進行...

三點估算法 三點估算 PERT歷時估算

pert program evalution and review technique 計畫評審技術 含義通過考慮估算中的不確定性和風險,可以提高活動持續時間估算的準確性。這個概念源自計畫評審技術 pert pert使用三種估算值來界定活動持續時間的近似區間 最可能時間 tm 基於最可能獲得的資源 ...

三點求圓公式Matlab 和C 版程式

三點求圓公式matlab 和c 版程式 給定三個點做圓弧軌跡規劃 function p p plot circle p1,p2,p3 利用這三個點做乙個平面方程 k 11 p1 2 p3 2 p2 3 p3 3 p2 2 p3 2 p1 3 p3 3 k 12 p2 1 p3 1 p1 3 p3 3...