poj 2546 Circular Area
来源:互联网 发布:曲靖市罗平县经济数据 编辑:程序博客网 时间:2024/04/28 22:47
//求两圆公共部分面积, 三种情况:相交、相离、相容
#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
const double Pi=acos(-1.0);
const double EP=1e-8;
struct Point{double x, y;};
struct Cir{Point c; double r;}c1, c2;
double dist(Point p1, Point p2){
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
int main(){
//freopen("1.txt", "r", stdin);
double d1, d2, d, a1, a2, area;
while(scanf("%lf%lf%lf%lf%lf%lf", &c1.c.x, &c1.c.y, &c1.r, &c2.c.x, &c2.c.y, &c2.r)!=EOF){
d=dist(c1.c, c2.c);
if(d>=c1.r+c2.r-EP){
printf("0.000\n");continue;
}
if(d<=c1.r-c2.r+EP){
printf("%.3f\n", Pi*c2.r*c2.r);continue;
}
if(c1.r<c2.r){
Cir t=c1;
c1=c2;
c2=t;
}
d1=(c1.r*c1.r-c2.r*c2.r)/d/2+d/2;
d2=d-d1;
a1=acos(d1/c1.r);
a2=acos(d2/c2.r);
area=a1*c1.r*c1.r+a2*c2.r*c2.r-0.5*c1.r*c1.r*sin(2*a1)-0.5*c2.r*c2.r*sin(2*a2);
printf("%.3f\n", area);
}
return 0;
}
- poj 2546 Circular Area
- poj 2546 Circular Area
- POJ 2546 Circular Area
- poj 2546 Circular Area
- POJ 2546 Circular Area 几何
- POJ 2546 Circular Area 笔记
- poj 2546 Circular Area(几何)
- zoj 1597 || poj 2546 Circular Area(数学题)
- Poj 2546 Circular Area & LiaghtOJ 1118 Incredible Molecules
- POJ 2546 Circular Area(两个圆相交面积)
- poj 2546 Circular Area (两圆相交面积)
- poj 2546 Circular Area 两圆面积交
- POJ 2546 || Circular Area(两圆面积交
- POJ 2546 Circular Area [相交园面积]【计算几何】
- POJ 2546 Circular Area 两圆相交面积
- Circular Area
- ZOJ 1597 Circular Area(POJ 2546)(两个圆的位置关系)
- POJ 2546 & ZOJ 1597 Circular Area(求两圆相交的面积 模板)
- javascript childNodes
- C++类的static数据成员和static函数的定义(define)
- 应用程序正常初始化(0xc0150002)失败的解决办法
- 链接 IPP 和 MKL 库文件
- DataStage 简介
- poj 2546 Circular Area
- android学习笔记之--命令集
- 按rule全排列数字筛选(0-1背包)
- 算符优先级 记忆口诀
- PC客户端与Android服务端的Socket同步通信(USB)
- MMS不调用系统函数实现流程
- 线段树的发明者:Bentley,我会好好记住他的 = =。
- 算出某日是这一年的第几天
- 《hadoop 权威指南》 读书笔记