来自BNU热身赛的一道几何题,个人感觉还行,毕竟Q神卡了7次才过去。。

E. School Flower

Time Limit: 1000ms
Memory Limit: 65536KB

64-bit integer IO format: %lld      Java class name: Main

Submit Status

学校的草坪上最近种满了漂亮的鲜花,为了给这些花朵浇水,学校购置了两个用于灌溉的喷头。每个喷头都有一个喷射半径,可以给喷射半径内的植物浇水。草坪上的有些花恰只能被一个喷头灌溉;可能还些花会被两个喷头同时灌溉,这些花会生长的更旺盛。

现在,ch0588想请你帮忙计算下,能同时被两个喷头灌溉的面积有多大?(下图中红色面积为所求)

(上图红色部分为所求面积)

Input

输入数据只有两行实数,用空格隔开

x1 y1 r1

x2 y2 r2

分别代表两个第i个喷头的位置(xi,yi),和它的喷射半径ri。

(0<xi,yi,ri<1000.0)

Output

输出一行,题目描述中的所求面积(保留两位小数)

Sample Input

1.0 3.0 3.0
1.0 8.0 4.0

Sample Output

6.64

Hint

π的值请取:3.1415926

解题思路:

  思路上没有什么难的,主要是讨论两个圆的各种位置关系,然后得到我们需要的结果。。。

相离和包含可以直接写,但是相交的话,要手推公式了。

代码:

 1 # include<cstdio>
 2 # include<iostream>
 3 # include<set>
 4 # include<cmath>
 5 # include<iomanip>
 6
 7 using namespace std;
 8
 9 # define PI 3.1415926
10
11 int main(void)
12 {
13     double x1,y1,r1;
14     double x2,y2,r2;
15     cin>>x1>>y1>>r1;
16     cin>>x2>>y2>>r2;
17
18     double s;
19     double r_ans = fabs(r2-r1);
20
21     double d = sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
22     if ( d >= r1+r2 )
23     {//相离
24         s = 0.00;
25     }
26     else if ( d <= r_ans )
27     {//内含
28         if ( r2 >= r1 )
29         {
30             s = PI*r1*r1;
31         }
32         else
33         {
34             s = PI*r2*r2;
35         }
36     }
37     else
38     {//相交
39         double a,aa;
40         double b,bb;
41         a = (r1*r1+(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)-r2*r2)/(2*r1*d);
42         aa = 2*acos(a);
43         b = (r2*r2+(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)-r1*r1)/(2*r2*d);
44         bb = 2*acos(b);
45         double s1 = r1*r1*sin(aa)/2;
46         double s2 = r2*r2*sin(bb)/2;
47         double s3 = r1*r1*aa/2;
48         double s4 = r2*r2*bb/2;
49         s = s3-s1+s4-s2;
50
51     }
52     printf("%.2f\n",s);
53
54
55
56
57
58     return 0;
59 }

转载于:https://www.cnblogs.com/wikioibai/p/4416075.html

圆形相交,相切,相离,包含相关推荐

  1. 二维空间内,如何判断两条线段是否相交,相离,平行,重合,并求交点

    首先,假设有两条线段p,q,求这两条线段的空间关系. 我们把两条线段的四个顶点看为向量,用坐标表示:p1(p1x,p1y), p2(p2x,p2y), q1(q1x,q1y), q2(q2x, q2y ...

  2. 【CSP】202009-4 星际旅行(计算几何)

    该题本质上并不难,只要你理解了它的核心--刨析直线与圆的关系. 在以前的高中课本中,想必大家都学过,过三点必确定一个平面,显然这里的三点我们取黑体中心,及任意两个旅行点.这样一来超维情况便只剩下解决两 ...

  3. NOIp(lus)2017总结

    考场复原 Day 1 先扫了一遍三道题,初步感觉T1画风诡异,或许是数论,T2大模拟,T3图论一坨 然后开始推导第一题 推了15min,P都没有 开始找规律 对于它给的样例,3 7 得11,3 10得 ...

  4. [计算机图形学]光线追踪的基本原理(前瞻预习/复习回顾)

    一.光栅化的弊端 我们为什么要用光线追踪呢,在之前的篇章中,我们提到了,光栅化的方式很难表示一些全局的效果,如(1)软阴影,(2)Glossy的反射(类似镜子但又不像镜子那么光滑的材质,如打磨的铜镜和 ...

  5. 如何判断两个链表是否相交并求出相交点

    排除链表存在环的情况 此情况的意思就是普通的单链表是否相交问题. 相交是什么意思?注意不是单纯的节点的数值域相等,相交的意思是两个链表的部门节点的是同一个,就是这些节点为这两个链表共有. 链表的定义参 ...

  6. 用shapely判断两个图形的包含相交关系

    shapely shapely介绍 shapely安装 shapely的导入 Point.LineString.Polygon的通用属性 Point对象 LineString对象 Polygon对象 ...

  7. 圆形英文在html中,圆形元素在网页设计中的巧妙运用

    原标题:圆形元素在网页设计中的巧妙运用 圆形元素在网页设计中的巧妙运用 圆,是一个优雅的形状,但在优雅的同时似乎还带着一种神秘的格调.也正因为圆形元素拥有这种与生俱来的特性,所以在与其他元素合作时,一 ...

  8. 光线追踪RayTracing,基本原理,判断物体与光线相交

    光线的三点假设: 光线按直线传播 光线之间不会发生碰撞 光线会经过一系列折射反射进入摄像机 可以从摄像机发出光线,推出可逆的光路 上图中,透明球在与相机直连的线条处,需要将折射和反射的着色点结果相加, ...

  9. 【Unity】图形相交检测

    前言 图形相交检测常常用在伤害判定,使用自定义的图形相交检测,可以在一定程度上控制性能. 比如2D格斗游戏中使用的矩形包围盒(AABB),一些动作游戏中常常出现的扇形攻击. 2D的图形相交检测能够满足 ...

最新文章

  1. 分分钟玩转多进程编程
  2. Python爬虫(十三)_JSON模块与JsonPath
  3. 减少C++编译时间的方法
  4. java面向对象-------类属性和方法,不同类之间调用
  5. php我赢职场季枫_我赢职场 - 主页
  6. 详解-OTUS(大津法-最大类间方差)原理及C语言代码实现
  7. 修改 系统文件夹 名称 视频设备
  8. 老板必须亲自抓销售,公司越小越如此
  9. 使用HEVC官方编码器HM
  10. 一文带你看懂自然语言处理——word表示技术的变迁(从bool模型到BERT)
  11. 关于ChartControl的绑定数据源使用
  12. 从零开始搭建ABP框架(Asp .Net Boilerplate)+Oracle(11 g)
  13. 旧版的rust怎么老是掉线_RUST服务器进不去 RUST掉线用什么加速器解决?
  14. Seurat 4.0 | 单细胞转录组数据整合(scRNA-seq integration)
  15. TensorFlow Serving
  16. python报告水印怎么弄_如何用python操作word添加水印?这里有个问题,希望大家看一下!...
  17. 怎样选择合适的ADC芯片
  18. 算法心得:高效算法的奥秘 作者:[美] Henry S. Warren, Jr.
  19. 韦东山freeRTOS系列教程之【第二章】内存管理
  20. unity hdrp的TAA

热门文章

  1. react-native APP图标和名字的配置
  2. 一个人竟然撸了一个网易云音乐云村
  3. 毕业设计 单片机指纹识别考勤系统 - 嵌入式 物联网
  4. 51单片机期末课程作业之蓝牙、操控、测速、里程小车
  5. 第五期送书来了,这次送的都是畅销书!
  6. 通过uart串口和printf函数打印
  7. 家庭网络理解(家庭版光猫、路由器、交换机)
  8. cuem模拟器安装及使用
  9. VICA 架构设计(1)
  10. Sipeed MaixSense:Allwinner R329 (一)官方Debian系统--AIPU的基本使用--图像识别