前段時間,不知道為啥「愛的魔力轉圈圈」這句歌詞hot起來了。現在***與yyy一人轉了乙個圈圈,已知***與yyy兩個人轉的圈圈的圓心位置和半徑,小賴賴想知道這兩個圈圈重合部分的面積,小賴賴有點懶,所以把這個問題交給熱愛程式設計的你來解決~
輸入共兩行,每行有三個數x,y,r,其中(x,y)代表圈圈的圓心位置,r代表圈圈的半徑。
輸出乙個數,表示兩個圈圈的重合面積。
(所得結果 小數點後 保留三位)
0 0 2
2 0 5
12.566
#include
#define pi 3.14159265358979
using
namespace std;
intmain()
d=sqrt
((x2-x1)
*(x2-x1)
+(y2-y1)
*(y2-y1));
if(d>=r1+r2)
if(r2-r1>=d)
else
return0;
}
**:
假設半徑小的圓為c1,半徑大的圓為c2。
c1的半徑r1,圓心座標(x1,y1)。c2的半徑r2,圓心座標(x2,y2)。
d為兩圓圓心連線的長度。
相交面積為s
d=sqrt((x1-x2)^2 + (y1-y2)^2)
(1)如果r1+r2<=d
那麼兩圓相離,相交面積s=0
(2)如果r2-r1>=d
那麼半徑小的圓內含半徑大的圓,那麼相交面積為小圓的面積s=pir1r1
(3)既非(1)也非(2)
在圖上畫兩個相交圓,結合影象看。
那麼兩圓相交,連線小圓的圓心與兩個圓的交點,連線大圓的圓心和兩個圓的交點。
可以發現形成的圖形被兩個圓心的連線平分成2個全等三角形。
由小圓圓心和交點所連兩條線(長度為半徑)以及在大圓之內的弧所形成的扇形為s1
由大圓圓心和交點所連兩條線(長度為半徑)以及在小圓之內的弧所形成的扇形為s2
由小圓圓心和交點所連兩條線以及由大圓圓心和交點所連兩條線所形成的四邊形的面積為s3
可見相交面積s=s1+s2-s3
要求出扇形的面積,要知道扇形的圓心角。
小圓包含的扇形的圓心角為2*a1(考慮乙個三角形)
a1=
acos
((r1^
2+ d^
2- r2^2)
/(2.0* r1 * d)
) 餘弦定理
a2=acos
((r2^
2+ d^
2- r1^2)
/(2.0* r2 * d)
)s1=pi * r1 * r1 *
2* a1 /(2
* pi)
=a1 * r1 * r1
同理s2=a2 * r2 * r2
s3為乙個三角形面積的2倍
s3=2
* r1 * d *
sin(a1)/2
=r1 * d *
sin(a1)
則s=a1 * r1 * r1+a2 * r2 * r2-r1 * d *
sin(a1)
Python愛的魔力轉圈圈
根據給定數值,列印出一組由外向裡由小到大排列的數字影象 例如 for迴圈建立乙個空的二維size size大小的陣列 for i in range size 1 array 0 size print array 控制迴圈列印在二維陣列中的位置的前進方向 定義陣列內的對應位置的數值大小 j,k 0,0...
轉圈圈 二維矩陣
問題 將下面二維矩陣順時針輸出 public class 二維陣列迴圈輸出 print matrix static void print int matrix 下面進行恢復,直到到那裡了 c rightres 賦值得5 leftrow 下標第二行 while r rightrow 恢復 r righ...
Python實現逆時針轉圈圈列印矩陣
要求 逆時針轉圈圈列印矩陣,如下 01 16 15 14 13 02 17 24 23 12 03 18 25 22 11 04 19 20 21 10 05 06 07 08 09 假設是5 5的列表 lenth 5 width 5 先初始化全是0的矩陣 spin 0 lenth for i in...