数学题-计算相交圆的公共部分面积

参考学长的模板;

数学能力差就要看公式模板;数学知识不懂画图推一下就出来了。高三同学做这种题应该特别厉害。


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;
}


转载于:https://www.cnblogs.com/coded-ream/p/7207935.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值