TOJ 1754 Circular Area 两圆相交的面积
来源:互联网 发布:淘宝的市场定位 编辑:程序博客网 时间:2024/05/13 19:57
题意
题目链接:TOJ 1754 Circular Area
就是给出两个圆的圆心坐标和半径,求出俩圆的相交的面积。
SampleInput
20.0 30.0 15.0 40.0 30.0 30.0
SampleOutput
608.366
思路
几何问题
两个圆相含和相离不用多说了–相交就用俩扇形减去那个四边形就行。
注:求角的时候可以使用反三角函数,可以使用直角三角形计算
d2+t2=r21
(l−d)2+t2=r22 其中l 是俩圆心的距离,d是其中一个圆心到两圆交点连线的中点的距离、
这样计算可以避免二次方程。
代码
/*Accepted 1754 C++ 0.7K 0'00.00" 1364K*#include <iostream>#include <cmath>#include <stdio.h>using namespace std;int main(){ double x1,y1,r1,x2,y2,r2,d,l; while(cin>>x1>>y1>>r1>>x2>>y2>>r2) { l=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); if(l>=(r1+r2)) printf("0.000\n");// 两圆相离 else if(l<=r2-r1)printf("%.3lf\n",3.141592653*r1*r1);//r2包含r1 else if(l<=r1-r2)printf("%.3lf\n",3.141592653*r2*r2);//r1包含r2 else{//相交 double angle1=acos((l*l-r2*r2+r1*r1)/(2*l*r1));//夹角的一半 double angle2=acos((l*l-r1*r1+r2*r2)/(2*l*r2)); double s1=angle1*r1*r1; double s2=angle2*r2*r2; double s3=l*r1*sin(angle1); printf("%.3lf\n",s1+s2-s3); } }}
0 0
- TOJ 1754 Circular Area 两圆相交的面积
- TOJ 1754.Circular Area(两圆相交求面积)
- poj 2546 Circular Area (两圆相交面积)
- Circular Area 两圆相交面积(模板)
- POJ 2546 Circular Area 两圆相交面积
- poj2546—Circular Area(两圆相交面积)
- ZOJ.1597 Circular Area【两圆相交面积】 2015/09/23
- Poj.2546 Circular Area【两圆相交面积】 2015/09/23
- POJ 2546 Circular Area(计算几何 两圆相交面积)
- POJ 2546 Circular Area【计算几何,计算两圆相交面积】
- POJ 2546 Circular Area(两圆相交面积模版题)
- zoj 1597 Circular Area(求两圆相交的面积)
- POJ 2546 Circular Area(两个圆相交面积)
- HDU1798 Tell me the area(两圆的相交面积)
- zoj 1597 Circular Area (求两园相交面积)
- poj 2546 Circular Area 两圆面积交
- POJ 2546 || Circular Area(两圆面积交
- POJ 2546 & ZOJ 1597 Circular Area 两圆的面积交
- CocosStudio v2.x版本教程——“回调特性”(C++语言版)
- # spring容器对数据源属性文件解释抛出的异常
- LeetCode --- 71. Simplify Path
- Java 实现对Discuz 论坛登录 ()
- N-gram模型
- TOJ 1754 Circular Area 两圆相交的面积
- LeetCode --- 72. Edit Distance
- 面试记录-A公司
- 计算二进制中1的个数
- linux修改/etc/profile权限
- UVA - 10474 - Where is the Marble? (基数排序)
- [Debug]Kernel panic学习笔记(二)
- POJ-1083
- 字符型驱动模板