zoukankan      html  css  js  c++  java
  • 数学题-计算相交圆的公共部分面积

    参考学长的模板;

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


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


  • 相关阅读:
    RequireJS进阶(二)
    JavaScript判断元素为数字的奇异写法
    RequireJS进阶(三)
    RequireJS进阶(一)
    读Ext之十四(Ext元素)
    JavaScript中__proto__与prototype的关系
    工作流术语
    一个例子(Hello World)
    无题
    再谈调用子流程(1)
  • 原文地址:https://www.cnblogs.com/coded-ream/p/7207935.html
Copyright © 2011-2022 走看看