1. 程式人生 > >poj 2546 求2個圓相交的面積

poj 2546 求2個圓相交的面積

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define PI acos(-1.0)
using namespace std;
double solve(double x1,double y1,double x2,double y2,double r1,double r2)
{
	double d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
	if(d>r1+r2)
	return 0;
	if(r1>=d+r2)
	return PI*r2*r2;
	if(r2>=d+r1)
	return PI*r1*r1;
	double angle1=acos((r1*r1+d*d-r2*r2)/(2*r1*d));
	double angle2=acos((r2*r2+d*d-r1*r1)/(2*r2*d));
	return angle1*r1*r1+angle2*r2*r2-r1*d*sin(angle1);
	
}
int main()
{
	double x1,y1,x2,y2,r1,r2;
	while(~scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&r1,&x2,&y2,&r2))
	{
		printf("%.3f\n",solve(x1,y1,x2,y2,r1,r2));
	}
}

相關推薦

poj 2546 2相交面積

#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #defi

如何矩形相交面積

如何求兩個相交矩形的交集的面積? 就是交接的公共部分面積? class Rectangle { Point min; Point max; } Rectangle rect1, rect2; Rectangle rect; rect

java相交座標

最近由於專案需要,根據兩個圓函式求出相交的座標。實現程式碼如下,另感謝兩圓求交點演算法實現Java程式碼,雖然他所貢獻的程式碼中存在問題,但仍有借鑑意義。 1.兩個圓相交的數學求法 在中學數學中我們

【數學】相交部分的面積

//求兩圓相交部分面積 struct Circle{ double x,y; double r; }A,B,C,D; double calArea(Circle c1, Circl

HDU 5120 Intersection 相交面積模板

這題容斥原理求覆蓋面積就行 #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algori

Gym-101673: A Abstract Art (模板,多邊形的面積並)

tor rac -s define its -1016 truct std opera 手抄碼板大法。 #include<bits/stdc++.h> using namespace std; #define mp make_pair typedef

17.零起點學算法12——2日期之間的天數

2個 include std ret class %d style 17. amp #include<stdio.h> int main() { int n1,m1,d1,n2,m2,d2,s; while(scanf("%d-%d-%d %d

18.零起點學算法13——2時間之間的分鐘數

eof urn ret include amp turn 算法 scanf scan #include<stdio.h> int main() { int h1,m1,h2,m2,s; while(scanf("%d:%d %d:%d",&am

字串處理演算法(六)2字串最長公共部分

基礎演算法連結快速通道,不斷更新中: 整型陣列處理演算法部分: 整型陣列處理演算法(一)按照正態分佈來排列整型陣列元素 整型陣列處理演算法(二)檔案中有一組整數,要求排序後輸出到另一個檔案中 整型陣列處理演算法(三)把一個數組裡的所有元素,插入到另一個數組的指定位置 整型陣列

多邊形與相交面積

HDU2892求多邊形與圓相交面積 Problem Description 小白最近被空軍特招為飛行員,參與一項實戰演習。演習的內容是轟炸某個島嶼。。。 作為一名優秀的飛行員,任務是必須要完成的,當然,憑藉小白出色的操作,順利地將炸彈投到了島上某個位置,可是長官更關心的是,小白投擲的炸彈到底

hdu 5120 Intersection(兩相交面積)(模板)

Intersection 題目連結: 解題思路: 在紙上畫畫圖,不難發現,根據容斥定理:所要求的面積為兩外環的交集(ans1)-外環和內環的交集(ans2*2,對稱)+兩內環的 交集(多減去的部分,

mysql2時間的時間差,mysql絕對值

記錄2個mysql函式 1 求2個時間的時間差 TIMESTAMPDIFF(DAY,'2017-03-01','2016-03-05') 其中DAY可以換成月份,年,秒 2 求絕對值

PAT 1029. Median (25) 2排序陣列的中位數——剔除法

/************************* 題意: 求2個排序陣列的中位數 ************************/ /*********************** 剔除法,以求第幾大元素的角度去看 例如7個元素,則第4大的元素就是中位數。 那麼只要陣

計算幾何專題(計算兩相交面積

There are two circles in the plane (shown in the below picture), there is a common area between the

計算兩相交面積

兩圓相交分如下集中情況:相離、相切、相交、包含。 設兩圓圓心分別是O1和O2,半徑分別是r1和r2,設d為兩圓心距離。又因為兩圓有大有小,我們設較小的圓是O1。 相離相切的面積為零,程式碼如下: double d = sqrt((a.x-b.x)*(a.x-b.x)

poj 2420 n點的費馬點 隨機演算法解決

還是跟那題poj 1379 run away一樣的做法 改一下最優的方法(到n個點的距離之和)就好了 View Code //求n邊形的費馬點//即找到一個點使得這個點到n個點的距離之和最小#in

hdoj Intersection 5120 (數學計算幾何) 相交面積

Intersection Time Limit: 4000/4000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Total Submission(s): 1643 Accepted Submis

HDU 5120 Intersection (相交面積

ifd endif cstring pen syn %d nbsp efi ase 題意:給定圓環的內徑r和外徑R,以及2個相同圓環的圓心,求兩個圓環的相交面積。 思路: S = A大B大 - A大B小 - A小B大 + A小B小。(A表示A環,大表示大圓,B同)

相交面積 hdu5120

-c ace pes eno script inpu common area time 轉載 兩圓相交分如下集中情況:相離、相切、相交、包含。 設兩圓圓心分別是O1和O2,半徑分別是r1和r2,設d為兩圓心距離。又因為兩圓有大有小,我們設較小的圓是O1。 相離相切的面積

相交面積

一個無窮大的花園,花園中修建了兩個澆水噴頭,每個噴頭可以給以它中心的一定距離內的花澆水。請問兩個噴頭可以給多大面積的花園澆水? package step1; public class Task { public double solve(double x1, double y1, dou