写出算法的文字描述

第一步:输入两个圆的参数 x1、 y1、 r1、 x2、 y2、 r2。

第二步:计算两圆的距离d,然后分以下四种情况判断:

1、相离或相切。若d>=(r1+r2),则 s=0;

2、相交。若 |r1-r2| < d < (r1+r2),则利用 r1、r2、d计算圆对弦的圆心角的一半angle1,angle2,然后用数学公式(详情见最后)算出相交面积。

3、内含。若较大的圆的圆心为(x1,y1),半径为r1,则 d <= r1-r2,s = pi * r2 * r2;若较大的圆的圆心为(x2,y2),半径为r2,则 d <= r2-r1,s = pi * r1 * r1。

画出算法的程序流程

用C/C++语言写出具体的程序

#include<stdio.h>
#include<math.h>
#define pi 3.14int main()
{  double x1, y1, r1, x2, y2, r2;   double dist;  double s;double angle1, angle2; //输入两个圆的圆心以及半径;scanf("%lf %lf %lf %lf %lf %lf", &x1, &y1, &r1, &x2, &y2, &r2);//两圆的距离,通过距离判断是内含,相交,还是相离或相切;dist=sqrt((pow(x1-x2,2)+pow(y1-y2,2)));    if(dist>=r1+r2) s=0.0;else if(dist<=fabs(r1-r2))s=r1>r2? pi*r1*r1: pi*r2*r2;else{//得到角度的弧度值;angle1=acos((dist*dist+r1*r1-r2*r2)/(2*dist*r1)); angle2=acos((dist*dist+r2*r2-r1*r1)/(2*dist*r2));s=return angle1*r1*r1 + angle2*r2*r2 - r1*dist*sin(angle1); }printf("%f",s);return 0;
}

设计具体的实例验证算法的正确性,写出验证过程

数学解题过程

参考链接:

https://blog.csdn.net/aaakkk_1996/article/details/81746858

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

  1. 广工数控课设:平面凸轮的数控加工程序的编制

    广工数控课设:平面凸轮的数控加工程序的编制 1.前言 2.软件界面 2.主程序设计与分析 2.1参数输入控件 2.2生成凸轮轮廓 2.2数控代码的生成 2.4一些附加功能 3结束 受不了我的那个老师了 ...

  2. 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。

    需求:给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 分析思路: 1.将所有点二维坐标化,即定义出所有点的x,y坐标值 2.遍历出所有取出两点的情况(不考虑先后顺序),根据任意 ...

  3. LeetCode149. 直线上最多的点数: 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。

    给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | o | o ±------- ...

  4. 编写两个函数分别求两个数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个数由键盘输入。 输入输出格式示例: 输入:24 16 输出:zdgys=8,zxgbs=48

    编写两个函数分别求两个数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个数由键盘输入. 输入输出格式示例: 输入:24 16 输出:zdgys=8,zxgbs=48 #include ...

  5. 临近期末,图书管理系统课设项目安排上(附源码)

    图书管理系统 项目介绍 项目截图 源码分享 项目介绍 本系统是一个基于java的图书管理系统,用Swing显示信息. 开发环境为IDEA,使用mysql数据库.用 户分为 用户和管理员. 项目截图 源 ...

  6. c语言求出两个最大素数,求两个正整数的最大公约数      思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法。通式分别为 f(x, y) = f(y, x%y...

    求两个正整数的最大公约数 思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法.通式分别为 f(x, y) = f(y, x%y), f(x, y) = f(y, x - y) ( ...

  7. java 求两线交点_JAVA求两直线交点和三角形内外心的编程代码

    JAVA求两直线交点和三角形内外心的编程代码 一.求两直线交点 复制代码 代码如下: class Point { double x; double y; public Point() { this.x ...

  8. python求两数最大公因数_Python求两个数的最大公约数

    Python求两个数的最大公约数 一.求最大公约数算法: 1. 整数A对整数B进行取整, 余数用整数C来表示 举例: C = A % B 2. 如果C等于0,则C就是整数A和整数B的最大公约数 3. ...

  9. 写两个函数 分别求两个整数的最大公约数和最小公倍数 用主函数调用这两个函数 并输出结果 两个整数由键盘输入

    写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果.两个整数由键盘输入. 思路:先写一个主函数,通过主函数调用子函数来分别求出最大公倍数和最小公约数. 代码如下: ...

最新文章

  1. CBA 赛程的笔记 - 北京首钢
  2. UVa 11107 (后缀数组 二分) Life Forms
  3. 达内php吾爱_2018年达内c++全套视频课程(不加密)
  4. 《第一行代码》学习笔记37-服务Service(4)
  5. antd vue关闭模态对话框_如何在Bootstrap项目中用Vue.js替代jQuery
  6. 解决myeclipse里面git的更新(pull)操作问题
  7. [转载] 使用Python防止SQL注入攻击
  8. 网络安全与渗透测试工具导航
  9. Mac 抓包工具Charles4.0.2破解版,安装使用
  10. <EDEM MBD案例02>EDEM-Adams
  11. 对近来安庆天气特征的总结(夏季)
  12. 几张趣图助你理解HTTP状态码
  13. 盘点≠走过场,哪些功能可以进行高效库存盘点?
  14. cartographer探秘第三章之对比实验
  15. 发送打印任务后不打印
  16. iOS14降级iOS13
  17. 解决Win10插入耳机没声音
  18. python str转list
  19. /usr/bin/ld: cannot find -lxxx的错误
  20. JavaScript获取元素

热门文章

  1. 基于距离浓度的人工免疫算法(DCAIA)求函数最值(python实现)
  2. 聚四方之力,合四方之需:智能云网的持续进化
  3. php常驻内存插件,轻量级常驻内存型 PHP API 开发框架 LinkPHP
  4. 常见数字芯片功能描述总结
  5. SuperMap iClient3D for WebGL在移动端的应用
  6. BIEE使用总结(四)-BIEE变量的使用
  7. Vue进阶(一):Vue 学习资料汇总
  8. Unity3D图像后处理特效——Grayscale image effect
  9. 10分钟就可以秒懂计算机体系结构与CPU工作原理
  10. Model and Cost Function