计算几何-园的问题

一.圆与圆的位置关系

1.两圆交的面积  两圆如果相交,则交的面积是一个弓形。考虑到两个圆相交的面积只与圆心距相关。我们可以对圆进行平移旋转,使得两个圆的圆心分别为(0,0)和(d,0).

模板如下:

double CircleCrossArea(Circle A,Circle B){
	double r1 = A.r, r2 = B.r;
	double d = Dis(A.o, B.o),r=min(r1,r2);
	if (RlCmp(d, r1 + r2) >= 0)
		return 0;        //相离或者外切
	if (RlCmp(d, abs(r1 - r2)) <= 0)
		return pi*r*r;       //内含
	//将r1放在圆心
	double x1 = (d*d + r1*r1 - r2*r2) / (2 * d);
	double s1 = x1*sqrt(r1*r1 - x1*x1) - r1*r1*acos(x1/r1);
	//将r2放在圆心
	double x2 = (d*d + r2*r2 - r1*r1) / (2 * d);
	double s2 = x2*sqrt(r2*r2 - x2*x2) - r2*r2*acos(x2 / r2);
	return abs(s1 + s2);
}

 2.两圆交点 两圆位置关系一共有5中。我们将其归纳为3种,0个交点,个交点,1个交点,2个交点.并且将重合也看为0个交点,模板如下:

时间: 2024-08-26 08:38:27

计算几何-园的问题的相关文章

【转】[专题学习][计算几何]

原文地址:http://www.cnblogs.com/ch3656468/archive/2011/03/02/1969303.html 基本的叉积.点积和凸包等东西就不多说什么了,网上一搜一大堆,切一些题目基本熟悉了就差不多了. 一些基本的题目可以自己搜索,比如这个blog:http://blog.sina.com.cn/s/blog_49c5866c0100f3om.html 接下来,研究了半平面交,思想方法看07年朱泽园的国家队论文,模板代码参考自我校大牛韬哥: http://www.o

POJ 2405 Beavergnaw (计算几何-简单题)

Beavergnaw Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6203   Accepted: 4089 Description When chomping a tree the beaver cuts a very specific shape out of the tree trunk. What is left in the tree trunk looks like two frustums of a co

BZOJ 1502 NOI 2005 月下柠檬树 计算几何 自适应辛普森积分

题目大意:有一个由圆锥和圆台组成的柠檬树,在月亮发出的平行光下,可以形成一个影子,求这个影子的面积. 思路:理解投影的性质:只要是平行光线,投影在水平面上,所得的图形都与原图形全等. 知道了这一点我们就可以画画图,分析就知道,其实柠檬树的影子,就是一些园和等腰梯形的面积的并.(如下图,样例) 运用计算几何的知识就可以得到圆的方程和圆的公切线的方程,然后得到一个连续的函数.最后这个题就成为一直函数的解析式,求这个函数与X轴之间的面积. 套用辛普森积分:Simpson(l,r) = (F(l) +

!HDU 4380 三角屋内有奇数个宝藏的三角形有多少个-计算几何-(向量叉乘&amp;线段与点的关系&amp;暴力枚举)

题意:小明要买三座房子,这三个房子构成一个三角形,已知n个房子的坐标,任何三个房子都不在一条直线上,又已知有m个宝藏的坐标,问房子构成的三角形内有奇数个宝藏的三角形有多少个.数据范围:n(3~100),m(1~1000) 分析: 简单的计算几何.记住这题的做法. 三角形内的点的个数=上面的线段下面的点的个数 -- 下面两条线段下面的点的个数(或者下面一条线段减上面两条线段,看具体位置情况,所以直接取绝对值就好) n个点有n(n-1)/2条线段,不超过1W,枚举每条线段,再枚举每个宝藏的坐标(10

在博客园安家了

在博客园申请了新的博客. 原本的博客在csdn的,由于今天晚上无故的不能发布文章,也不能修改文章. 对csdn感到特别失望,故于cnblogs申请了新的博客,以后就在这里记录自己的学习经历了. 就是这样. ———————————————————————————————————————— ----我是一只弱渣程序猿

Opengl绘制计算几何库CGAL三角剖分结果的Demo

Ubuntu下改编了一个用CGAL计算输入点的三角剖分,并用OpenGL显示结果的C++程序. 该Demo可作为一个计算几何及绘图的框架. 代码如下: //编译命令:g++ spatial_sort.cpp -lglut -lGL -lGLU -lCGAL -lCGAL_Core -lgmp #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>   #include <CGAL/Triangulation_eucl

Ubuntu下安装cgal4.5.2计算几何库

摘要:cgal是一个开源的计算几何库, 博文记录了其编译.安装和使用方法. 1 库下载 站点:http://www.cgal.org/ 下载:https://gforge.inria.fr/frs/download.php/file/34514/CGAL-4.5.2.zip 2 解压缩.编译与安装 shell下进入解压文件夹 1)库配置文件生成命令: cmake . 提示缺少gmp和mpfr库 安装缺少的库: sudo apt-get install libgmp-dev libmpfr-dev

UVA 11178 Morley&#39;s Theorem 计算几何

计算几何: 最基本的计算几何,差积  旋转 Morley's Theorem Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu Submit Status Description Problem D Morley's Theorem Input: Standard Input Output: Standard Output Morley's theorem states that that the line

Today入驻了博客园

<html> <head> <title>Today入驻了博客园</title> </head> <body> 抱歉,今天才入园 </body> </html>