數學題-計算相交圓的公共部分面積

參考學長的模板;

數學能力差就要看公式模板;數學知識不懂畫圖推一下就出來了。高三同學做這種題應該特別厲害。


const double pi=acos(-1);
const double eps=0.00001;
double abss(double a,double b) //兩數作差絕對值
{
    return a-b>=0?(a-b):(b-a);
}
struct circle
{
    double x,y,r;
} a,b;
double get_dis(double x1,double y1,double x2,double y2)  // 兩點距離
{
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
double get_area(circle c1,circle c2)
{
    double dis=get_dis(c1.x,c1.y,c2.x,c2.y);
    if(dis>=c1.r+c2.r) //相離 爲 0;
        return 0;
    double min_r=c1.r<c2.r?c1.r:c2.r;
    double max_r=c1.r>c2.r?c1.r:c2.r;
    if(min_r+dis<=max_r) //內涵 爲 小圓;
        return pi*min_r*min_r;
    double x=2*acos((c1.r*c1.r+dis*dis-c2.r*c2.r)/(2*c1.r*dis));  //求圓心角
    double y=2*acos((c2.r*c2.r+dis*dis-c1.r*c1.r)/(2*c2.r*dis));  //求圓心角
    double area1=x*c1.r*c1.r/2-c1.r*c1.r*sin(x)/2;  //扇形面積 減去 三角形面積
    double area2=y*c2.r*c2.r/2-c2.r*c2.r*sin(y)/2;  //扇形面積 減去 三角形面積
    return area1+area2;
}


發佈了100 篇原創文章 · 獲贊 46 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章