无所谓程序设计语言,不过是表达形式不一罢了

  • 题目来源
  • 理论知识
    • 参考知识:
  • 代码实现
    • C#
      • 鼠标悬停此处预览测试样例
    • Java
      • 鼠标悬停于此预览测试样例
    • Kotlin
    • C++
    • C
    • Python
    • JavaScript
    • Html
    • objective-c
    • shell
    • perl
    • ruby
    • 汇编语言
  • 拓展
    • 改成两个圆环以后呢?

题目来源

鼠标悬停于此可预览题目

东华大学 .NET 技术课程中期作业。
帮别人忙,自己昨夜写的一个小程序。

理论知识

如上图所示:
四边形面积可由对称的两个三角形求和而得:
O1AO2B = O1AO2 + O1BO2 = 2 * O1AO2
以三角形 O1AO2 进行分析:
已知三边可以求:任意内角
∠AO1O2 = 余弦定理公式变形可求
该三角形面积 = 多种求法,介绍两种如下:
S = (1.0/2)* 两边乘积*夹角正弦值
或者海伦公式
p = (1.0/2)*(a+b+c)
s = sqrt(p*(p-a)*(p-b)*(p-c))

参考知识:

计算两圆相交面积
全网总结最全:17种求三角形面积的公式,从平面到立体

代码实现

C#

CircleArea.cs文件内容:
using System;namespace AreaCalculation
{public class CircleArea{private double r1;private double r2;private double d;public CircleArea(){this.r1 = .0;this.r2 = .0;this.d = .0;}public CircleArea(double r1 = .0,  double r2 = .0, double d = .0){this.r1 = r1;this.r2 = r2;this.d = d;}public void Init(ref double r1, ref double r2, ref double d){this.r1 = r1;this.r2 = r2;this.d = d;}public double IntersecArea(){var area = .0;if (this.r1 + this.r2 <= d) //两圆外离(切){//return .0;area = .0;}else if (Math.Abs(this.r1 - this.r2) >= d) //两圆内含(切)(此处必须要有等号,要处理同心圆的特例情形){//return (this.r1 < this.r2) ? Math.PI * this.r1 * this.r1 : Math.PI * this.r2 * this.r2;area = (this.r1 < this.r2) ? Math.PI * this.r1 * this.r1 : Math.PI * this.r2 * this.r2;}else //两圆相交{double ang1 = Math.Acos((this.r1 * this.r1 + this.d * this.d - this.r2 * this.r2) / (2 * this.r1 * this.d)); //弧度制,用于计算扇形面积(所占圆的比例)double ang2 = Math.Acos((this.r2 * this.r2 + this.d * this.d - this.r1 * this.r1) / (2 * this.r2 * this.d));//return ang1 * this.r1 * this.r1 + ang2 * this.r2 * this.r2 - this.r1 * d * Math.Sin(ang1); //两圆相交时,相交面积 = 两扇形面积 - 两圆心与两交点所组成的四边形的面积area =  ang1 * this.r1 * this.r1 + ang2 * this.r2 * this.r2 - this.r1 * d * Math.Sin(ang1); //两圆相交时,相交面积 = 两扇形面积 - 两圆心与两交点所组成的四边形的面积}return area;}public void OutResult(){Console.WriteLine("两个圆的半径分别为: {0} 和 {1}, 圆心距是:{2}", this.r1, this.r2, this.d);Console.WriteLine("两个圆所相交的面积为:{0}",Math.Round(IntersecArea(),2));}}
}

鼠标悬停此处预览测试样例

Java

// 即将用于和工厂方法实现实例化进行对比
public class CircleArea {private double _r1;private double _r2;private double _d;public double get_r1() {return _r1;}public double get_r2() {return _r2;}public double get_d() {return _d;}public void set_r1(double _r1) {this._r1 = _r1;}public void set_r2(double _r2) {this._r2 = _r2;}public void set_d(double _d) {this._d = _d;}CircleArea(){this._r1 = .0;this._r2 = .0;this._d = .0;}CircleArea(double r1, double r2, double d){this._r1 = r1;this._r2 = r2;this._d = d;}public double IntersecArea(){if (this._r1 + this._r2 <= this._d) //两圆外离(切){return .0;}else if (Math.abs(this._r1 - this._r2) >= this._d) //两圆内含(切)(此处必须要有等号,要处理同心圆的特例情形){return (this._r1 < this._r2 ? Math.PI * this._r1 * this._r1 : Math.PI * this._r2 * this._r2);}else //两圆相交{double ang1 = Math.acos((this._r1 * this._r1 + this._d * this._d - this._r2 * this._r2) / (2 * this._r1 * this._d)); //弧度制,用于计算扇形面积(所占圆的比例)double ang2 = Math.acos((this._r2 * this._r2 + this._d * this._d - this._r1 * this._r1) / (2 * this._r2 * this._d));return ang1 * this._r1 * this._r1 + ang2 * this._r2 * this._r2 - this._r1 * _d * Math.sin(ang1); //两圆相交时,相交面积 = 两扇形面积 - 两圆心与两交点所组成的四边形的面积}}public void OutResult(){System.out.printf("两个圆的半径分别为: %f 和 %f%n圆心距是:%f\n", this._r1, this._r2, this._d);//%n和\n都可以实现换行功能System.out.format("两个圆所相交的面积为:%.2f",IntersecArea());}
}

鼠标悬停于此预览测试样例

Kotlin

待更

C++

待更

C

待更

Python

待更

JavaScript

待更

Html

待更

objective-c

待更

shell

待更

perl

待更

ruby

待更

汇编语言

待更

拓展

改成两个圆环以后呢?

待更

2019/11/28 15:08

求任意两圆相交的面积(不限程序设计语言版本)相关推荐

  1. 两圆相交求面积 hdu5120

    转载 两圆相交分如下集中情况:相离.相切.相交.包含. 设两圆圆心分别是O1和O2,半径分别是r1和r2,设d为两圆心距离.又因为两圆有大有小,我们设较小的圆是O1. 相离相切的面积为零,代码如下: ...

  2. 求两圆相交面积(模板)

    两圆相交分如下集中情况:相离.相切.相交.包含. 设两圆圆心分别是O1和O2,半径分别是r1和r2,设d为两圆心距离.又因为两圆有大有小,我们设较小的圆是O1. 相离相切的面积为零,代码如下: dou ...

  3. Square Card 计算几何-两圆相交面积

    题意 : 给两个圆,分别代表得分区域和奖励区域,边长为a的正方形以均等概率扔到平面后绕中心旋转,保证一定会有某时刻正方形完全在得分区域内. 如果某时刻正方形完全落在区域内,获得相应分数,求正方形 既获 ...

  4. python求交点坐标_Python - 两圆相交求交点坐标

    Python - 两圆相交求交点坐标 Max.Bai 2016-05-16 Python - 两圆相交求交点坐标 三轴机械臂求坐标问题,其实转化为平面问题就是两圆相交求交点问题,交点算出来就可以用反三 ...

  5. 计算几何——多边形和圆相交的面积

    汇总篇:计算几何汇总 原文地址:https://www.cnblogs.com/lxglbk/archive/2012/08/12/2634192.html 代码部分为个人原创 圆与多变形相交的面积 ...

  6. 【算法记录/计算几何】扇形与圆相交的面积(待解决)

    目录 问题描述 近似求法 一种分类方式 000 另一种分类方式 外切或相离 相交 包含或内切 问题描述 假设扇形区域如上图,求一个圆与该扇形相交部分的面积. (有木有大佬告诉我怎么求啊) 近似求法 细 ...

  7. MATLAB求图片两圆圆心,求助:如何求此图中两圆的圆心距?

    对于你给出的图片,我根据之前提到的思路编写了以下程序.感觉还蛮准的.这个程序只能用于两圆相交的情况.当小圆在大圆内部时,需要在其中加以判定.仅供参考. clear;clc c = imread('1. ...

  8. 利用函数求任意两个数之间的和

    利用函数求任意两个数之间的和 <!DOCTYPE html> <html lang="en"><head><meta charset=&q ...

  9. 设计求任意两个整数和的web程序,用户通过提交页面(input.jsp)输入两个整数,并提交给一个(sum.jsp)程序

    张继军 董卫 <java web 应用开发技术与实案列教程>课后习题之第三章第4题 题解 题目内容 源代码 input.jsp sum.jsp positive.jsp negetive. ...

最新文章

  1. 基于正交投影的点云局部特征描述详解
  2. Python实现与LeetCode--堆
  3. extern用法详解(转)
  4. Hadoop Yarn任务优先级(作业优先级、应用优先级)设置
  5. Comptia Strata认证考点相关情况【2018.06.05更新】
  6. ASP.NET AJAX 控件开发基础
  7. Shiro 身份验证
  8. yum安装指定(特定)版本(旧版本)软件包的方法
  9. mysql查询连续次数_Mysql如何查询连续的时间次数
  10. python之min
  11. 机器学习——Gradient Boost Decision Tree(Treelink)
  12. 用tomcat搭建https
  13. MAML代码及理论的深度学习 PyTorch二阶导数计算
  14. 题目---小Q定义了一种数列称为翻转数列: 给定整数n和m, 满足n能被2m整除。对于一串连续递增整数数列1, 2, 3, 4..., 每隔m个符号翻转一次, 最初符号为'-';。
  15. Redis详解之特殊数据类型GEO及底层数据结构
  16. 获取硬件序列号(注册机)
  17. Windows常用快捷组合键整理Dos命令基础集合
  18. 复杂美区块链技术专利技术之一:交易组解析
  19. gtx1060和gtx1650 的差距 哪个好
  20. eclipse怎么查看jsp生成的class文件

热门文章

  1. LCM液晶显示模组是什么,液晶显示模块有几种类型呢
  2. 从Hadoop到Spark和Flink,大数据处理框架十年激荡发展史
  3. Django 使用不同配置文件的三种方式
  4. TypeError: Converting circular structure to JSON
  5. error converting to execution character set illegal byte sequence报错解决办法
  6. 与日历有关的小程序推荐
  7. 如何在Windows 11上的WSL2做到GPU直通,并用Deepracer本地训练炸干电脑的资源(显卡降价了,618等等党还等什么,一起来加入Deepracer的比赛学习交流吧)
  8. App Store上下载和安装Xcode
  9. 想要通过炒币财富自由?先看看这篇文章吧!
  10. Android开发————简易App设计(一)