兩圓相交求面積c++
題目
給定2圓的圓心座標和半徑,計算並輸出兩圓相交的面積,如果是外切或不相交,則輸出0,圓周率取函式值acos(-1)。
輸入格式:
輸入6個整數x1 y1 r1 x2 y2 r2,分別表示兩圓的圓心(x1,y1),(x2,y2)和半徑r1,r2。
輸出格式:
根據圓的位置關係,輸出其相交部分的面積(保留2位小數)。
輸入樣例:
在這裡給出2組輸入。例如:
0 0 1 2 2 1
2 0 2 5 2 3
輸出樣例:
在這裡給出相應的輸出。例如:
0.00
3.22
//此處PI值為acos(-1)
//扇形面積 α * r * r / 2
//求角度cos(A) = (b * b + c * c - a * a) / (2 * b * c)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define lowbit(x) ((x) & (-x))
#define PI acos(-1)
const int inf = 0x3f3f3f3f;
const int N = 500010;
struct circle {
int x, y, r;
};
double dis(circle a, circle b) {
return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
int main() {
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif
circle a, b;
cin >> a.x >> a.y >> a.r;
cin >> b.x >> b.y >> b.r;
double len = dis(a, b);
if (len + min(a.r, b.r) <= max(a.r, b.r)) {
if (a.r < b.r)
printf("%.2f", PI * a.r * a.r);
else
printf("%.2f", PI * b.r * b.r);
} else if (len >= a.r + b.r) {
cout << "0.00";
} else {
double d1 = 2 * acos((a.r * a.r + len * len - b.r * b.r) / (2 * a.r * len));
double d2 = 2 * acos((b.r * b.r + len * len - a.r * a.r) / (2 * b.r * len));
double area1 = d1 * a.r * a.r / 2 - a.r * a.r * sin(d1) / 2;
double area2 = d2 * b.r * b.r / 2 - b.r * b.r * sin(d2) / 2;
printf("%.2f", area1 + area2);
}
return 0;
}
相關文章
- Python 求圓的面積Python
- C#--求圓的面積和周長C#
- 計算兩豎直直線與橢圓圍成部分面積
- 計算圓的面積程式碼
- PLSQL實現計算圓的面積SQL
- 3201 圓的周長與面積
- Java的類和物件 圓柱體類求底面積和體積Java物件
- 連結串列面試題(十三)---求兩個都不帶環的連結串列相交的結點面試題
- 最簡單的Qt程式:根據使用者所輸入圓半徑計算圓面積QT
- [計算幾何]圓與三角形是否相交
- CSS實現兩個球相交的粘粘效果CSS
- 【計算幾何】求線段相交交點座標
- 程式設計師花光兩年積蓄 買99臺iPhone 6求愛程式設計師iPhone
- 最大島嶼面積
- 關於判斷兩個矩陣相交的一點想法矩陣
- 如何用python求圓周率?Python
- 蒙特卡羅法求圓周率
- 長度、面積、體積的相似比原理
- Qt 求圓和橢圓上任意角度點的座標QT
- CAD兩點畫圓操作
- POJ 1039-Pipe(計算幾何-線段相交、求交點)
- oracle按列求乘積(轉)Oracle
- 字串相乘——求字串的乘積字串
- 利用定積分求極限
- 數字訊號處理:線性卷積、迴圈卷積、圓周卷積計算卷積
- PCL 計算點雲的面積和體積
- 轉發精品:求極限、求積分、求微分、求導數、求曲,求全微分、求複合求導
- cad面積快捷鍵命令 cad測量不規則圖形面積
- 旋轉向量合成,兩個圓圈
- 頁面卡頓的優化–圓角優化
- 頁面卡頓的優化--圓角優化
- 回撥函式,求積函式函式
- 【matplotlib 實戰】--面積圖
- C++語言演算法之求任意兩個相同字元的最大距離C++演算法字元
- OJ-1011:圓柱體表面積、JavaJava
- 第四周【專案4-圓柱表面積】
- YTU-OJ-Problem D: C++習題 虛擬函式-計算圖形面積C++函式
- POJ 1408-Fishnet(計算幾何-根據交點求多邊形面積)