计算两个圆相交部分的面积
以下是直接封装好的函数,六个参数,意思分别是第一个圆的圆心,半径,第二个圆的圆心,半径,返回相交部分的面积,如果不相交,则返回零。
编程的时候直接复制粘贴调用就行了,至于原理,就是两个扇形的面积减去四边形的面积。但是四边形不一定是凸四边形,所以我用到了凯伦公式,直接求面积,管它凸的还是凹的!扇形的圆心角不一定总是锐角,所以用到了余弦定理,管它是正的还是负的。
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;
}//六个参数,意思分别是第一个圆的圆心,半径,第二个圆的圆心,半径,返回相交部分的面积,如果不相交,则返回零。
计算两个圆相交部分的面积相关推荐
- 平面上有两个圆相交,求两个圆相交部分的面积
平面上有两个圆相交,求两个圆相交部分的面积 又学习了一遍算法,感触颇深,也对算法有了更进一步的认识,记录一下这次的学习,希望能帮到有需要的人. 输入:六个参数:第一个圆的圆心坐标,半径,第二个圆的圆心 ...
- 算法分析课设(一)平面上有两个圆相交,求两个圆相交部分的面积
写出算法的文字描述 第一步:输入两个圆的参数 x1. y1. r1. x2. y2. r2. 第二步:计算两圆的距离d,然后分以下四种情况判断: 1.相离或相切.若d>=(r1+r2),则 s= ...
- java 圆的交点_java求两个圆相交坐标
最近由于项目需要,根据两个圆函数求出相交的坐标.实现代码如下,另感谢两圆求交点算法实现Java代码,虽然他所贡献的代码中存在问题,但仍有借鉴意义. 1.两个圆相交的数学求法 在中学数学中我们知道,一个 ...
- java求两个圆相交坐标
最近由于项目需要,根据两个圆函数求出相交的坐标.实现代码如下,另感谢两圆求交点算法实现Java代码,虽然他所贡献的代码中存在问题,但仍有借鉴意义. 1.两个圆相交的数学求法 在中学数学中我们知道,一个 ...
- html两个圆相交,Word怎么将两个圆交叉重叠部分填充阴影?
最近有小伙伴向小编请教该如何用Word画出两个交叉的圆形,并把交叉部分用阴影显示.其实画图并不是Word的强项,有很多工具软件可以很方便的完成以上问题,但在Word里我们同样可以完成.看看下面的步骤吧 ...
- canvas 两个圆相交重叠区域颜色填充_「译」Canvas中的环绕规则 -Winding rules in Canvas...
前言 已经确定了未来一段时间会在Canvas相关领域深耕了,最近刚开始读fabric.js的源码并完成了3w行左右代码的首轮阅读,后续会深入了解背后的原理.在源码的阅读过程中遇到了不少问题,也解决了不 ...
- 练习题:让用户提供半径,然后计算出对应圆的周长和面积
import math r = float(input("输入一个半径r=")) c = math.pi*r*2 s = math.pi*r**2 print("圆的周长 ...
- python输入圆的半径r、计算并输出圆的周长和面积_编程从键盘输入圆的半径r,计算并输出圆的周长和面积.{用C语言编写}谢了...
方法: #include #define PI 3.14 int main() { float r,c,area; printf("请输入圆的半径:"); scanf(" ...
- 键盘输入圆的半径,计算并输出圆的周长和面积
#include <stdio.h> int main() { float radius, circumference, area; const float pi = 3.14159; p ...
最新文章
- 服务器虚拟化组网方案,服务器虚拟化部署方案计划.doc
- java 自定义validate_Golang-03 自定义validator,实现java注解功能-Go语言中文社区
- 统计次数c语言,C 语言统计关键字出现次数
- android获取url参数值,android 获取url 参数值
- 每天一个linux命令--定时启动
- form表单提交时,同一个名字的input类型的两个同时提交会覆盖吗
- mongodb地理空间索引原理阅读摘要
- 做到年薪50W是如何学习Java架构技术的?
- 可能是最强大的【CSS】动画库
- 【网络基础】路由表,分组转发算法
- plus.webview.create( url, id, styles, extras )参数及说明
- Sql Server约束的学习一(主键约束、外键约束、唯一约束)
- 打架打出来的牛逼城市!
- postman安装使用教程(标贝科技)
- 在消防巡检设备中安科瑞多电量变送器的应用
- 为什么要研发vin码识别?
- 《鹧鸪天》——厉以宁
- OAuth2第三方登录快速接入
- oracle 2019 ocp,2019 OCP简介
- RDS Mysql Single-AZ和Multi-AZ性能差异
热门文章
- IJCAI 2021 | 会议摘要有难度?快来引入对话篇章结构信息
- 到目前为止,区块链的发展的经历了几个阶段?
- python 矩阵列拼接_numpy数组拼接简单示例
- 使用psmoveapi连接并使用psmove(Windows环境)
- 在中国食品行业品牌咨询最常用的方法论有哪些?代表公司是哪个?
- 阿里云邮箱验证,输入的邮箱地址明明是正确的,但是就是提示一直找不到邮件地址。
- python画魔法阵_Python编写循环的两个建议 | 鹅厂实战!
- java 报数游戏:有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到m的人出列
- 基于CC2652P/E72-2G4M20S1E zigbee3.0树莓派转接板
- imacros:运行javascript