您的位置:首页 > 其它

两圆相交面积计算

2015-08-01 20:15 218 查看
double overlap_area(double x1,double y1,double r1,double x2,double y2,double r2){
double d = sqrt( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) );
double angle1,angle2,h1,h2,s1,s2;
if( d >= r1+r2 )
return 0;
if( d <= fabs(r1-r2) )
return min( acos(-1.0)*r1*r1 , acos(-1.0)*r2*r2 );
angle1 = acos( (d*d+r1*r1-r2*r2) / (2*d*r1) );
angle2 = acos( (d*d+r2*r2-r1*r1) / (2*d*r2) );
h1 = angle1 * r1 * r1;
h2 = angle2 * r2 * r2;
s1 = r1 * r1 * cos(angle1) * sin(angle1);
s2 = r2 * r2 * cos(angle2) * sin(angle2);
return h1 + h2 - (s1+s2);
}

拓展:两圆环相交面积(两圆环相同)

S = S1(大圆相交面积) + S3(小圆相交面积) - 2 * S2(大小圆相交面积)

两圆环相交面积(两圆环不同,O1,O2)

S = S1(两大圆相交面积) - S2(O1小圆与O2大圆相交面积) - S3(O1大圆与O2小圆相交面积) + S4(小圆相交面积)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: