两圆相交面积计算
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(小圆相交面积)
相关文章推荐
- UVA 129
- SQL Server 2016 CTP2.2 的关键特性
- Java设计模式:工厂模式举例
- 读书笔记-《人人都是产品经理》,重读
- Java基本语法--程序流程控制
- [精通iOS开发(第5版)]第21章 集合视图 笔记
- 在eclipse中使用Lombok
- tomcat之jvm分析
- MySQL的InnoDB索引原理详解 (转)
- codeforces 505 D Mr. Kitayuta's Technology
- uva 673 Parentheses Balance(栈)
- BP神经网络设计常用的基本方法和实用技术
- 一个工程师该如何高效工作
- Linux vsftpd移植笔记
- acdream 1023 xor按位思考
- 字符串是否为空
- java web系统架构设计需要解决的几个问题
- LeetCode#18 4 Sum
- MyBatis学习系列十:Spring集成
- 安装python