首页 > 代码库 > 西南民大oj(两园交求面积)

西南民大oj(两园交求面积)

 

西南民大oj:http://www.swunacm.com/acmhome/welcome.do?method=index

我的几何不可能那么可爱

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 11            测试通过 : 8 

描述

 

小朋友们 你们好~ 你们都知道AT立场吧

AT立场又叫“A T Field”,是“Absolute Terror Field”的缩写。直译作“绝对恐怖领域”,又称绝对领域。视觉化的AT力场呈金色套合多边形状,拥有AT力场的使徒几乎能抵挡所有常规武器的攻击,只有另一个AT力场才可能将其中和(EVA机体即可展开同样的力场)。AT力场的含义被深化为“将自身与自我(ego)

技术分享

和客观世界分割开的一堵墙”,揭示出了“每个生物都有AT力场”的道理。渚薰称人类的AT 力场为“心之壁”。

现在 真嗣与渚薰同时放出了AT立场。

 

 

我们现在要算的就是两个人AT立场在二维坐标平面的相交面积。

为了使题目简单,我们假设 两人处于同一个二维坐标平面,两人所放的at立场呈完美的圆形,给出两人的坐标,与两人AT立场的释放半径,求相交的面积。

 

输入

 

多组输入输出

第一行 真嗣所在的坐标x与坐标y以及AT立场释放半径r

第二行 渚薰所在的坐标x与坐标y以及AT立场释放半径r

(|x|,|y|,|r|<=100,且x,y,r全是整数额)

 

输出

两人AT立场相交的面积 保留3位小数

样例输入

0 0 1
0 1 1

样例输出

1.228

提示

几何什么的真是太简单了!技术分享

题意:给定两园坐标与半径求相交面积。

技术分享
#include <cstdio>#include <cstring>#include <cmath>#include <iostream>#include <algorithm>#include <queue>#include <cstdlib>#include <stack>#include <vector>#include <set>#include <map>#define LL long long#define mod 1000000007#define inf 0x3f3f3f3f#define N 1000010using namespace std;#define sqr(x) ((x)*(x))const double eps=1e-9;const double inf=1e10;const double pi=acos(-1.0);const int maxn=22;struct point{    double x, y;};struct circle{    point o;    double r;} c[maxn];int n;double dis(point a, point b){    return sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));}int sgn(double x){    if(fabs(x)<eps)return 0;    if(x>0)return 1;    return -1;}double circle_inter_area(circle c1, circle c2){    double d=dis(c1.o, c2.o);    if(c1.r<c2.r)swap(c1, c2);    if(sgn(d-c1.r-c2.r)>=0)  return 0;//相离或外切    if(sgn(d-(c1.r-c2.r))<=0)return pi*sqr(c2.r);//内含或内切    double ang1, ang2;    ang1=acos((sqr(c1.r)+sqr(d)-sqr(c2.r))/(2.0*c1.r*d));    ang2=acos((sqr(c2.r)+sqr(d)-sqr(c1.r))/(2.0*c2.r*d));    double res=ang1*sqr(c1.r)+ang2*sqr(c2.r)-d*c1.r*sin(ang1);    return res;}int main(){    while(scanf("%lf%lf%lf%lf%lf%lf",&c[0].o.x, &c[0].o.y, &c[0].r,&c[1].o.x, &c[1].o.y, &c[1].r)>0)        printf("%.3lf\n", circle_inter_area(c[0],c[1]));    return 0;}
View Code

 

西南民大oj(两园交求面积)