计算两个圆相交部分的面积
2014-11-17 21:42
1726 查看
以下是直接封装好的函数,六个参数,意思分别是第一个圆的圆心,半径,第二个圆的圆心,半径,返回相交部分的面积,如果不相交,则返回零。
编程的时候直接复制粘贴调用就行了,至于原理,就是两个扇形的面积减去四边形的面积。但是四边形不一定是凸四边形,所以我用到了凯伦公式,直接求面积,管它凸的还是凹的!扇形的圆心角不一定总是锐角,所以用到了余弦定理,管它是正的还是负的。
编程的时候直接复制粘贴调用就行了,至于原理,就是两个扇形的面积减去四边形的面积。但是四边形不一定是凸四边形,所以我用到了凯伦公式,直接求面积,管它凸的还是凹的!扇形的圆心角不一定总是锐角,所以用到了余弦定理,管它是正的还是负的。
double intersect(double x1,double y1,double r1,double x2,double y2,double r2){ double s,temp,p,l,ans; l=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); if(l>=r1+r2) ans=0; else if(l<=abs(r1-r2)){ if(r1<=r2) ans=pi*r1*r1; else ans=pi*r2*r2; } else{ p=(l+r1+r2)/2; s=2*sqrt(p*(p-l)*(p-r1)*(p-r2)); if(r1>r2){ temp=x1;x1=x2;x2=temp; temp=y1;y1=y2;y2=temp; temp=r1;r1=r2;r2=temp; } ans=acos((r1*r1+l*l-r2*r2)/(2*r1*l))*r1*r1+acos((r2*r2+l*l-r1*r1)/(2*r2*l))*r2*r2-s; } return ans; } //六个参数,意思分别是第一个圆的圆心,半径,第二个圆的圆心,半径,返回相交部分的面积,如果不相交,则返回零。
相关文章推荐
- 数学题-计算相交圆的公共部分面积
- 数学题-计算相交圆的公共部分面积
- hdoj Intersection 5120 (数学计算几何) 求两个相交圆的面积
- 【C#/算法】任意圆形和三角形相交部分面积的计算方法
- Gym 100952J&&2015 HIAST Collegiate Programming Contest J. Polygons Intersection【计算几何求解两个凸多边形的相交面积板子题】
- 如何计算平面n个圆相交的公共部分的面积
- 如何计算平面n个圆相交的公共部分的面积
- 如何计算平面n个圆相交的公共部分的面积
- 公布计算任意多边形相交部分的面积的方法
- 【数学】求两个圆的相交部分的面积
- HDU 3264 Open-air shopping malls (计算几何-圆相交面积)
- 求两圆环相交部分的面积
- Tell me the area(计算几何--求两圆相交面积)
- 计算两个矩形重叠的面积
- HDU 3264 Open-air shopping malls(两圆相交公共部分面积 二分答案)
- 在一个平面坐标系上,有两个矩形,计算交集的面积。
- 90页第三题,创建一个 Rectangle类,添加width和lenght两个成员变量 在 Rectangle类中添加两种方法分别计算矩形的周长和面积 ,编程利用Rectangle输出一个矩形的
- 1.创建一个Rectangle类,添加width和height两个成员变量。 2.在Rectangle中添加两种方法分别计算矩形的周长和面积 3.编程利用Rectangle输出一个矩形的周
- hdoj.5120 Intersection【计算几何-两圆相交面积】 2015/08/01
- 任意方位矩形相交面积计算