圆形相交,相切,相离,包含
来自BNU热身赛的一道几何题,个人感觉还行,毕竟Q神卡了7次才过去。。
E. School Flower
64-bit integer IO format: %lld Java class name: Main
学校的草坪上最近种满了漂亮的鲜花,为了给这些花朵浇水,学校购置了两个用于灌溉的喷头。每个喷头都有一个喷射半径,可以给喷射半径内的植物浇水。草坪上的有些花恰只能被一个喷头灌溉;可能还些花会被两个喷头同时灌溉,这些花会生长的更旺盛。
现在,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
圆形相交,相切,相离,包含相关推荐
- 二维空间内,如何判断两条线段是否相交,相离,平行,重合,并求交点
首先,假设有两条线段p,q,求这两条线段的空间关系. 我们把两条线段的四个顶点看为向量,用坐标表示:p1(p1x,p1y), p2(p2x,p2y), q1(q1x,q1y), q2(q2x, q2y ...
- 【CSP】202009-4 星际旅行(计算几何)
该题本质上并不难,只要你理解了它的核心--刨析直线与圆的关系. 在以前的高中课本中,想必大家都学过,过三点必确定一个平面,显然这里的三点我们取黑体中心,及任意两个旅行点.这样一来超维情况便只剩下解决两 ...
- NOIp(lus)2017总结
考场复原 Day 1 先扫了一遍三道题,初步感觉T1画风诡异,或许是数论,T2大模拟,T3图论一坨 然后开始推导第一题 推了15min,P都没有 开始找规律 对于它给的样例,3 7 得11,3 10得 ...
- [计算机图形学]光线追踪的基本原理(前瞻预习/复习回顾)
一.光栅化的弊端 我们为什么要用光线追踪呢,在之前的篇章中,我们提到了,光栅化的方式很难表示一些全局的效果,如(1)软阴影,(2)Glossy的反射(类似镜子但又不像镜子那么光滑的材质,如打磨的铜镜和 ...
- 如何判断两个链表是否相交并求出相交点
排除链表存在环的情况 此情况的意思就是普通的单链表是否相交问题. 相交是什么意思?注意不是单纯的节点的数值域相等,相交的意思是两个链表的部门节点的是同一个,就是这些节点为这两个链表共有. 链表的定义参 ...
- 用shapely判断两个图形的包含相交关系
shapely shapely介绍 shapely安装 shapely的导入 Point.LineString.Polygon的通用属性 Point对象 LineString对象 Polygon对象 ...
- 圆形英文在html中,圆形元素在网页设计中的巧妙运用
原标题:圆形元素在网页设计中的巧妙运用 圆形元素在网页设计中的巧妙运用 圆,是一个优雅的形状,但在优雅的同时似乎还带着一种神秘的格调.也正因为圆形元素拥有这种与生俱来的特性,所以在与其他元素合作时,一 ...
- 光线追踪RayTracing,基本原理,判断物体与光线相交
光线的三点假设: 光线按直线传播 光线之间不会发生碰撞 光线会经过一系列折射反射进入摄像机 可以从摄像机发出光线,推出可逆的光路 上图中,透明球在与相机直连的线条处,需要将折射和反射的着色点结果相加, ...
- 【Unity】图形相交检测
前言 图形相交检测常常用在伤害判定,使用自定义的图形相交检测,可以在一定程度上控制性能. 比如2D格斗游戏中使用的矩形包围盒(AABB),一些动作游戏中常常出现的扇形攻击. 2D的图形相交检测能够满足 ...
最新文章
- 分分钟玩转多进程编程
- Python爬虫(十三)_JSON模块与JsonPath
- 减少C++编译时间的方法
- java面向对象-------类属性和方法,不同类之间调用
- php我赢职场季枫_我赢职场 - 主页
- 详解-OTUS(大津法-最大类间方差)原理及C语言代码实现
- 修改 系统文件夹 名称 视频设备
- 老板必须亲自抓销售,公司越小越如此
- 使用HEVC官方编码器HM
- 一文带你看懂自然语言处理——word表示技术的变迁(从bool模型到BERT)
- 关于ChartControl的绑定数据源使用
- 从零开始搭建ABP框架(Asp .Net Boilerplate)+Oracle(11 g)
- 旧版的rust怎么老是掉线_RUST服务器进不去 RUST掉线用什么加速器解决?
- Seurat 4.0 | 单细胞转录组数据整合(scRNA-seq integration)
- TensorFlow Serving
- python报告水印怎么弄_如何用python操作word添加水印?这里有个问题,希望大家看一下!...
- 怎样选择合适的ADC芯片
- 算法心得:高效算法的奥秘 作者:[美] Henry S. Warren, Jr.
- 韦东山freeRTOS系列教程之【第二章】内存管理
- unity hdrp的TAA