圓的反演 計算幾何 hdu6097

2021-08-06 02:21:27 字數 967 閱讀 8356

題意:圓心 o 座標(0, 0), 給定兩點 p, q(不在圓外),滿足 po = qo,要在圓上找一點 d,使得 pd + qd 取到最小值。

資料範圍

t≤500000

−100≤x,y≤100

1≤r≤100

思路

根據圓的反演,構造乙個相似三角形,可以轉換問題。

如果求得的距離小於eps,說明近似於原點,距離為2*r;

然後就根據兩個反演點的中點到原點的距離 和半徑進行比較,小於等於有交點,大於沒有交點。

因為反演點與原點構成乙個等腰三角形,所以用中點的距離進行判斷就行了。

關於圖的反演,可以看看大神的分析:acdreamers

如果是小於的情況,那麼有交點,結果就是兩個反演點的直線距離,再乘以相似比。

如果大於,說明沒有交點,這種情況就應該在p,q兩個點的連線的中垂線上。

根據比例,求出在圓上的點d的座標,已知兩點座標就能求出距離。

題解:這個有圖會好理解點)

ac**

#include #include #include #define eps 1e-8

using namespace std;

int main()

double k=r*r/(d1*d1);

double x3,y3,x4,y4;

x3=x1*k,y3=y1*k;

x4=x2*k,y4=y2*k;

double mx=(x3+x4)/2,my=(y3+y4)/2;

double d=sqrt(mx*mx+my*my),ans;

if(d<=r)

else

printf("%.7f\n",ans);

}return 0;

}

Hdu 4773,13杭州D(幾何,圓的反演)

2015 02 24 16 06 13 這道題乍一看能直接數學搞.就交給mo神犇吧.關於幾何反演基礎知識,推薦兩篇博文 博文1,博文2 從一維反演推廣而來的圓反演有蠻多性質,這題我們要關注 1 過反演中心的圓,反形為不過反演中心的直線。2 不過反演中心的直線,反形為過反演中心的圓。例1 例2 圖中 ...

HDU 6158 圓的反演

注意由於反演 中具有一一對應的性質,只有原來相交的點到後面才會可能相交,剩下的就是圓的反演了 這個東西沒有模版 還有我們用反演變換的時候一般關注兩個東西,乙個是過反演中心的圓 因為這種圓的反形是一條直線 另一種情況我們關注不過反演中心的直線,因為這個的反形是圓。也一般在這種情況下我們才使用反演變換 ...

hdu6158(圓的反演)

初始有兩個圓,按照標號去放圓,問放完 n 個圓後的總面積。圓的反演的應用。參考blog 設反演圓心為 o 和反演半徑 r 圓的反演的定義 已知一圓 c 圓心為 o 半徑為 r 如果 p 與 p 在過圓心 o 的直線上且 op cdot op r 2 則稱 p 與 p 關於 o 互為反演點。有圓的反演...