hdu 5120

来源:互联网 发布:php 防止sql注入 编辑:程序博客网 时间:2024/04/28 07:58

题意简单  就是求两个圆环的相交面积

fun(a,b) 计算 圆a,b的相交面积, 如果a是环,b是圆,面积等于 两个大圆的面积交 减去 小圆与大圆的交。

所以  圆环的交等于   大圆交 — 大圆与小圆交 - 大圆与小圆交 + 小圆与小、小圆交 


//圆交模板 

#define eps 0.000000001 

#define pi acos(-1.0) //圆周率不能手写(WA精度不够)

struct Point

{

    double x;

    double y;

    Point(double a=0,double b=0){ x=a; y=b;}//constructor

};

double fun(Point c1,double r1, Point c2,double r2){

    double a1, a2, d, ret;

    d = sqrt((c1.x-c2.x)*(c1.x-c2.x)+(c1.y-c2.y)*(c1.y-c2.y));

    if ( d > r1 + r2- eps ) return 0;

    if ( d < r2 - r1+ eps ) return pi*r1*r1;

    if ( d < r1 - r2+ eps ) return pi*r2*r2;

    a1 = acos((r1*r1+d*d-r2*r2)/2/r1/d);

    a2 = acos((r2*r2+d*d-r1*r1)/2/r2/d);

    ret= (a1-0.5*sin(2*a1))*r1*r1+ (a2-0.5*sin(2*a2))*r2*r2;

    return ret;

}


0 0
原创粉丝点击