首页 > 代码库 > poj2546Circular Area(两圆相交面积)
poj2546Circular Area(两圆相交面积)
链接
画图推公式
这两种情况 都可用一种公式算出来 就是两圆都求出圆心角 求出扇形的面积减掉三角形面积
#include <iostream>using namespace std;#include<cmath>#include<iomanip>#include<algorithm>int main(){ double d,t,t1,s,x,y,xx,yy,r,rr; while(cin>>x>>y>>r) { cin>>xx>>yy>>rr; d=sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy)); if(d>=r+rr) s=0; else if(d<=fabs(r-rr)) s=min(acos(-1.0)*r*r,acos(-1.0)*rr*rr); else {t=(r*r+d*d-rr*rr)/2.0/d; t1=sqrt(r*r-t*t); s=-d*t1+r*r*acos(t/r)+rr*rr*acos((d-t)/rr); } cout<<fixed<<setprecision(3)<<s<<endl; } return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。