以下是直接封装好的函数,六个参数,意思分别是第一个圆的圆心,半径,第二个圆的圆心,半径,返回相交部分的面积,如果不相交,则返回零。

编程的时候直接复制粘贴调用就行了,至于原理,就是两个扇形的面积减去四边形的面积。但是四边形不一定是凸四边形,所以我用到了凯伦公式,直接求面积,管它凸的还是凹的!扇形的圆心角不一定总是锐角,所以用到了余弦定理,管它是正的还是负的。

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;
}//六个参数,意思分别是第一个圆的圆心,半径,第二个圆的圆心,半径,返回相交部分的面积,如果不相交,则返回零。

计算两个圆相交部分的面积相关推荐

  1. 平面上有两个圆相交,求两个圆相交部分的面积

    平面上有两个圆相交,求两个圆相交部分的面积 又学习了一遍算法,感触颇深,也对算法有了更进一步的认识,记录一下这次的学习,希望能帮到有需要的人. 输入:六个参数:第一个圆的圆心坐标,半径,第二个圆的圆心 ...

  2. 算法分析课设(一)平面上有两个圆相交,求两个圆相交部分的面积

    写出算法的文字描述 第一步:输入两个圆的参数 x1. y1. r1. x2. y2. r2. 第二步:计算两圆的距离d,然后分以下四种情况判断: 1.相离或相切.若d>=(r1+r2),则 s= ...

  3. java 圆的交点_java求两个圆相交坐标

    最近由于项目需要,根据两个圆函数求出相交的坐标.实现代码如下,另感谢两圆求交点算法实现Java代码,虽然他所贡献的代码中存在问题,但仍有借鉴意义. 1.两个圆相交的数学求法 在中学数学中我们知道,一个 ...

  4. java求两个圆相交坐标

    最近由于项目需要,根据两个圆函数求出相交的坐标.实现代码如下,另感谢两圆求交点算法实现Java代码,虽然他所贡献的代码中存在问题,但仍有借鉴意义. 1.两个圆相交的数学求法 在中学数学中我们知道,一个 ...

  5. html两个圆相交,Word怎么将两个圆交叉重叠部分填充阴影?

    最近有小伙伴向小编请教该如何用Word画出两个交叉的圆形,并把交叉部分用阴影显示.其实画图并不是Word的强项,有很多工具软件可以很方便的完成以上问题,但在Word里我们同样可以完成.看看下面的步骤吧 ...

  6. canvas 两个圆相交重叠区域颜色填充_「译」Canvas中的环绕规则 -Winding rules in Canvas...

    前言 已经确定了未来一段时间会在Canvas相关领域深耕了,最近刚开始读fabric.js的源码并完成了3w行左右代码的首轮阅读,后续会深入了解背后的原理.在源码的阅读过程中遇到了不少问题,也解决了不 ...

  7. 练习题:让用户提供半径,然后计算出对应圆的周长和面积

    import math r = float(input("输入一个半径r=")) c = math.pi*r*2 s = math.pi*r**2 print("圆的周长 ...

  8. python输入圆的半径r、计算并输出圆的周长和面积_编程从键盘输入圆的半径r,计算并输出圆的周长和面积.{用C语言编写}谢了...

    方法: #include #define PI 3.14 int main() { float r,c,area; printf("请输入圆的半径:"); scanf(" ...

  9. 键盘输入圆的半径,计算并输出圆的周长和面积

    #include <stdio.h> int main() { float radius, circumference, area; const float pi = 3.14159; p ...

最新文章

  1. 服务器虚拟化组网方案,服务器虚拟化部署方案计划.doc
  2. java 自定义validate_Golang-03 自定义validator,实现java注解功能-Go语言中文社区
  3. 统计次数c语言,C 语言统计关键字出现次数
  4. android获取url参数值,android 获取url 参数值
  5. 每天一个linux命令--定时启动
  6. form表单提交时,同一个名字的input类型的两个同时提交会覆盖吗
  7. mongodb地理空间索引原理阅读摘要
  8. 做到年薪50W是如何学习Java架构技术的?
  9. 可能是最强大的【CSS】动画库
  10. 【网络基础】路由表,分组转发算法
  11. plus.webview.create( url, id, styles, extras )参数及说明
  12. Sql Server约束的学习一(主键约束、外键约束、唯一约束)
  13. 打架打出来的牛逼城市!
  14. postman安装使用教程(标贝科技)
  15. 在消防巡检设备中安科瑞多电量变送器的应用
  16. 为什么要研发vin码识别?
  17. 《鹧鸪天》——厉以宁
  18. OAuth2第三方登录快速接入
  19. oracle 2019 ocp,2019 OCP简介
  20. RDS Mysql Single-AZ和Multi-AZ性能差异

热门文章

  1. IJCAI 2021 | 会议摘要有难度?快来引入对话篇章结构信息
  2. 到目前为止,区块链的发展的经历了几个阶段?
  3. python 矩阵列拼接_numpy数组拼接简单示例
  4. 使用psmoveapi连接并使用psmove(Windows环境)
  5. 在中国食品行业品牌咨询最常用的方法论有哪些?代表公司是哪个?
  6. 阿里云邮箱验证,输入的邮箱地址明明是正确的,但是就是提示一直找不到邮件地址。
  7. python画魔法阵_Python编写循环的两个建议 | 鹅厂实战!
  8. java 报数游戏:有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到m的人出列
  9. 基于CC2652P/E72-2G4M20S1E zigbee3.0树莓派转接板
  10. imacros:运行javascript