题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1798

题意:给出两个圆的圆心坐标与半径,求他们相交部分的大小

思路:有三种情况;

1. 两圆相离,area = 0;

2. 两圆内涵,area = PI×min(r1, r2)×min(r1, r2);

3. 一般情况相交,用扇形面积减去三角形面积;

代码:

 #include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#define PI 2*asin(1) //**注意此处不能简单的用3.1415926,精度不够
#define length(x1, y1, x2, y2) sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
#define horn(a, b, c) ((a*a+b*b-c*c)/(2*a*b))
using namespace std; int main(void){
double x1, y1, r1, x2, y2, r2;
while(scanf("%lf%lf%lf", &x1, &y1, &r1)!=EOF){
scanf("%lf%lf%lf", &x2, &y2, &r2);
double area;
double gg = length(x1, y1, x2, y2);
if(gg>=r1+r2){
area = ;
}else if(fabs(r2-r1)>=gg){
area = PI*min(r2, r1)*min(r2, r1);
}else{
double horna = acos(horn(r1, gg, r2));
double hornb = acos(horn(r2, gg, r1));
double area1 = r1*r1*horna;
double area2 = r2*r2*hornb;
double area3 = 0.5*r1*r1*sin(horna*);
double area4 = 0.5*r2*r2*sin(hornb*);
area = (area1 - area3) + (area2 - area4);
}
printf("%.3lf\n", area);
}
return ;
}

hdu1798(几何面积计算)的更多相关文章

  1. arcgis jsapi接口入门系列(5):几何(点线面)基本操作

    点 point: function () { //通过wkt生成点 //wkt,代表点的坐标 let wkt = "POINT(113.566806 22.22445)"; //w ...

  2. 关于Three.js基本几何形状之SphereGeometry球体学习

    一.有关球体SphereGeometry构造函数参数说明 <1>.SphereGeometry(radius, widthSegments, heightSegments, phiStar ...

  3. 几何服务,cut功能测试

    关于几何服务 几何服务用于辅助应用程序执行各种几何计算,如缓冲区.简化.面积和长度计算以及投影.在 ArcGIS Server 管理器中启动几何服务之后,您才能够在应用程序开发过程中使用该服务. 问题 ...

  4. 几何服务,cut功能,输入要素target(修改后)内容。

    几何服务,cut功能测试,输入要素target(修改后)内容. {"displayFieldName":"","fieldAliases": ...

  5. 几何服务,cut功能,输入要素target(修改前)内容。

    几何服务,cut功能测试,输入要素target(修改前)内容. {"geometryType":"esriGeometryPolyline","geo ...

  6. 如何让你的UWP应用程序无缝调用几何作图

    有时候需要编辑一些几何图形,如三角形,圆锥曲线等,在UWP应用中加入这些几何作图功能是件费时间又很难做好的事.其实Windows 10 应用商店中已有一些专业的几何作图工具了,那么能借来一用吗?答案是 ...

  7. poj 2031Building a Space Station(几何判断+Kruskal最小生成树)

    /* 最小生成树 + 几何判断 Kruskal 球心之间的距离 - 两个球的半径 < 0 则说明是覆盖的!此时的距离按照0计算 */ #include<iostream> #incl ...

  8. NOIP2002矩形覆盖[几何DFS]

    题目描述 在平面上有 n 个点(n <= 50),每个点用一对整数坐标表示.例如:当 n=4 时,4个点的坐标分另为:p1(1,1),p2(2,2),p3(3,6),P4(0,7),见图一. 这 ...

  9. DOM 元素节点几何量与滚动几何量

    当在 Web 浏览器中查看 HTML 文档时,DOM 节点被解析,并被渲染成盒模型(如下图),有时我们需要知道一些信息,比如盒模型的大小,盒模型在浏览器中的位置等等,本文我们就来详细了解下元素节点的几 ...

随机推荐

  1. node.js安装cnpm 提高下载速度

    由于中国网络特殊的网络环境原因,国外部分网站访问速度很慢. 安装node.js时,使用npm 安装软件速度也很慢,可以使用阿里的cnpm来解决 官方网址:http://npm.taobao.org: ...

  2. JVM内存模型和关键参数设置

    一. JVM内存模型: Jvm内存模型是学好Java很重要的一部分,该部分学习能让我们在系统运维的时候,或者优化服务器的时候能够有方法,懂原理. 二. Jvm关键参数: 1. 堆大小设置参数: -Xm ...

  3. [转载]JavaEE学习篇之——Session&&Cookie

    原文链接: http://blog.csdn.net/jiangwei0910410003/article/details/23337043 今天继续来看看JavaWeb的相关知识,这篇文章主要来讲一 ...

  4. 标签语义化之常用HTML标签

    一.布局的理解误区 网络上流行管新型的布局方式叫“DIV+CSS”,其实是一个错误的理解,导致了很多人过度依赖与滥用DIV标签, HTML提供了我们一共七八十个标签,其中常用的有三十个左右,DIV不过 ...

  5. am335x 1G nand 启动Linux qt

    针对DRAM的升级,修改u-boot 的参数即可. include/configs/ok335x.h 修改PHYS_DRAM_1_SIZE 为0x40000000  这是1G的大小. 原来512M 为 ...

  6. ZUI前段框架简介

    一.说明 基于Bootstrap定制 ZUI继承了Bootstrap 3中的大部分基础内容,但出于与Bootstrap不同的目的,一些组件都进行了定制和修改.这些变化包括: 移除了部分插件的限制,增加 ...

  7. windows下的getopt/getoptlong函数

    windows下的getopt/getoptlong函数 getopt/getopt_long函数是GNU C中的函数,在linux编程中很常用到.这里就不介绍了. windows下没有找到类似的函数 ...

  8. 1.4---字符串空格变成20%(CC150)

    import CtCILibrary.AssortedMethods; public class Question { // Assume string has sufficient free spa ...

  9. phpcms get标签用法

    {pc:get sql="SELECT t.*,n.*,n.typeid nt FROM v9_type t LEFT JOIN v9_news n ON n.typeid=t.typeid ...

  10. WCF 定制自己的签名验证逻辑

    关键点: 1. 保证在客户端设置签名. client.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.CurrentU ...