zoukankan      html  css  js  c++  java
  • poj 2546(两圆公共面积)

    Circular Area
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 5682   Accepted: 2225

    Description

    Your task is to write a program, which, given two circles, calculates the area of their intersection with the accuracy of three digits after decimal point.

    Input

    In the single line of input file there are space-separated real numbers x1 y1 r1 x2 y2 r2. They represent center coordinates and radii of two circles.

    Output

    The output file must contain single real number - the area.

    Sample Input

    20.0 30.0 15.0 40.0 30.0 30.0

    Sample Output

    608.366
    
    ///题意:两个圆之间的相交面积
    #include<stdio.h>
    #include<iostream>
    #include<string.h>
    #include <stdlib.h>
    #include<math.h>
    #include<algorithm>
    using namespace std;
    const int N = 2;
    const double pi = atan(1.0)*4;
    struct Circle{
        double x,y,r;
    }c[N];
    typedef Circle Point;
    double dis(Point a, Point b){
        return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
    }
    ///两圆相交面积模板
    double Two_Circle_Area(Circle a,Circle b){
        double d = dis(a,b);
        if(a.r+b.r<d){ ///相离
            return 0;
        }
        if(fabs(a.r-b.r)>=d){ ///内含
            double r = min(a.r,b.r);
            return pi*r*r;
        }
        double angleA = acos((a.r*a.r+d*d-b.r*b.r)/2/a.r/d);
        double angleB = acos((b.r*b.r+d*d-a.r*a.r)/2/b.r/d);
        double area1 = a.r*a.r*angleA; ///扇形面积公式 S = r*r*圆心角 / 2;
        double area2 = b.r*b.r*angleB;
        return area1+area2-a.r*d*sin(angleA);
    }
    int main(){
        while(scanf("%lf%lf%lf%lf%lf%lf",&c[0].x,&c[0].y,&c[0].r,&c[1].x,&c[1].y,&c[1].r)!=EOF){
            printf("%.3lf
    ",Two_Circle_Area(c[0],c[1]));
        }
        return 0;
    }
  • 相关阅读:
    Fiddler filter 过滤隐藏css、js、图片等
    十三、单元测试
    十二、文件操作
    Go_客户信息管理系统
    十一、面向对象编程_下
    十、面向对象编程_上
    九、map
    八、排序和查找
    七、数组和切片
    六、函数、包和错误处理
  • 原文地址:https://www.cnblogs.com/liyinggang/p/5456612.html
Copyright © 2011-2022 走看看