兩圓相交求面積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
- 用css畫出兩個大圓相交,可以在各自圓及相交部分輸入文字CSS
- pandas求兩個表格不相交的集合
- 計算兩豎直直線與橢圓圍成部分面積
- 空間或平面判斷兩線段相交(求交點)
- 3201 圓的周長與面積
- 計算圓的面積程式碼
- Java的類和物件 圓柱體類求底面積和體積Java物件
- 求矩形周長與面積
- swust oj 249 求凸包面積板子
- CSS實現兩個球相交的粘粘效果CSS
- [計算幾何]圓與三角形是否相交
- 最簡單的Qt程式:根據使用者所輸入圓半徑計算圓面積QT
- 如何用python求圓周率?Python
- CAD兩點畫圓操作
- 蒙特卡羅法求圓周率
- OJ-1011:圓柱體表面積、JavaJava
- Qt 求圓和橢圓上任意角度點的座標QT
- 利用定積分求極限
- 字串相乘——求字串的乘積字串
- oracle按列求乘積(轉)Oracle
- 轉發精品:求極限、求積分、求微分、求導數、求曲,求全微分、求複合求導
- 數字訊號處理:線性卷積、迴圈卷積、圓周卷積計算卷積
- C++語言演算法之求任意兩個相同字元的最大距離C++演算法字元
- 旋轉向量合成,兩個圓圈
- 最大島嶼面積
- 積社教階最這感圓為紅滿ece
- cad面積快捷鍵命令 cad測量不規則圖形面積
- PCL 計算點雲的面積和體積
- 【matplotlib 實戰】--面積圖
- 2024/12/1 【連結串列】 LeetCode 面試題 02.07. 連結串列相交LeetCode面試題
- 技術積累——C++ 呼叫 python 專案C++Python
- C++ OpenCv二值化找圓心座標C++OpenCV
- 【面試攻略】C++面試-4399面試C++
- 碎片化學習Java(五)-- Java計算圓柱體積Java
- c++面試題C++面試題
- AC-DMIS 5.3 平面 、 圓 、 圓(已知,先偏置一個軸,後偏置兩個軸)
- cad算面積的快捷鍵命令是什麼 cad區域面積怎麼算