bjfu1235 兩圓公共面積

2022-08-17 22:51:19 字數 2377 閱讀 7192

給定兩個圓,求其覆蓋的面積,其實也就是求其公共面積(然後用兩圓面積和減去此值即得最後結果)。

我一開始是用計算幾何的方法做的,結果始終不過。**如下:

/*

* author : ben */

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

double pi = acos(-1

);typedef

struct

mypoint

} mypoint;

inline

double mydistance2(const mypoint &p1, const mypoint &p2)

inline

double mydistance(const mypoint &p1, const mypoint &p2)

mypoint intersection(mypoint u1, mypoint u2, mypoint v1, mypoint v2)

void intersection_line_circle(mypoint c, double

r, mypoint l1, mypoint l2,

mypoint& p1, mypoint&p2)

void intersection_circle_circle(mypoint c1, double r1, mypoint c2, double

r2, mypoint& p1, mypoint&p2)

intmain()

else

if (dis <= fabs(r1 - r2))

else

printf(

"%.6f\n

", ans);

}return0;

}

根據後來的除錯,應該是對如下圖b的情況處理不正確。

於是後來上網找了幾個中學的解析幾何公式,終於a了。

做法是聯立兩個圓的方程(相減),得到相交弦所在直線方程,然後用點到直接的距離公式得到h1和h2,接著算出θ1和θ2,然後就能求得三角形的面積和扇形的面積了。一開始我以為需要分類討論上面圖a和圖b兩種情況,後來發現,直接去掉求距離時的取絕對值運算就可以了,因為距離為負的時候,得到的夾角也是負的,這樣求的三角形面積是負的,扇形也是原先的相補的那部分,具體的圖我就不畫了,很容易想明白的。

ac**如下:

/*

* author : ben */

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

double pi = acos(-1

);typedef

struct

mypoint

} mypoint;

inline

double mydistance2(const mypoint &p1, const mypoint &p2)

intmain()

else

if (dis <= fabs(r1 - r2))

else

printf(

"%.6f\n

", ans);

}return0;

}

模版 兩圓相交部分面積

題目 poj 2546 circular area 題意 計算兩圓公共部分面積 260k 0ms g 提交wa,c 提交ac o o include include include include include include using namespace std const double ep...

兩圓相交求相交面積

1.海 式 2.余弦公式cosa public double areaofintersectionofcircles int firstx,int firsty,int firstr,int secondx,int secondy,int secondr alpha math.acos d d fi...

求兩圓交集的面積

設圓c1 半徑為r1 面積為s1 圓cr 半徑為 r2 面積為s2 圓心距離為d 兩圓的交集有3種情況 1 兩圓交面積為0的情況 即 d r1 r2 2 小圓內含含於大圓的情況 即 max r1,r2 d min r1,r2 3 兩圓相交的情況 即 d r1 r2 且 d max r1,r2 對於第...