球的體積並(計算幾何 球缺)

2021-09-11 18:27:54 字數 1660 閱讀 8820

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 32768k,其他語言65536k

special judge, 64bit io format: %lld

某天lililalala正在玩一種奇妙的吃雞遊戲--因為在這個遊戲裡會同時有兩個圓形安全區(他們可能相交)。

lililalala覺得求圓的面積並太簡單了,所以想把這個問題公升級一下。

現在在三維空間裡有 2 個球形安全區,分別用四元組  和 表示,其中  r1、r2 表示球半徑, (x1,y1,z1)和 (x2,y2,z2) 表示球心

lililalala想知道安全區的總體積是多少?即求這兩個球的體積並。

輸入有兩行。

第一行四個實數 x1,y1,z1,r1 --第乙個球的球心座標和半徑。

第二行四個實數 x2,y2,z2,r2--第二個球的球心座標和半徑。

保證所有輸入的座標和半徑的範圍都在 [−100,100] 內。半徑為非負數。

輸出一行乙個實數--表示兩個球的體積並,你的答案被認為正確,當且僅當絕對誤差不超過 10−6 10−6。
示例1

複製

0 0 0 1

2 0 0 1

複製

8.3775804
示例2

複製

0 0 0 1

0 0 0 0.5

複製

4.1887902
題意:求球的體積並~

題解:球的體積:4.0/3πr^3,球的表面積:4πr^2

球冠面積s=2πrh(此處為擴充套件,此題用不到)      球缺的體積公式為v=πh^2(r−h/3)        h為球冠高  ,r為球半徑,此題關鍵是求h~~

兩球心距離=l    半徑分別為r1 , r2     兩球相交的截面為平面,相交線為圓,半徑為r3     截面到球心的距離分別為l1 ,l2   l1+l2=l;

則很容易知道:

r1^2=r3^2+l1^2; 

r2^2=r3^2+l2^2;

因為r1,r3,l1 和 r2,r3,l2分別形成兩個直角三角形,斜邊為r1和r2;

用上面第乙個式子減第二個式子得到:

r1^2−r2^2=l1^2−l2^2

r1^2−r2^=(l1+l2)(l1−l2)

因為 l1+l2=l; 所以l2=l-l1

則:r1^2−r2^2=(2l1−l)l 

l1=[(r1^2−r2^2)/l+l]/2

l2=l−l1

兩個球冠高:h1=r1−l1  h2=r2−l2

這是在兩球相交的情況下的推導~~其他情況體積並好求~~~

上**:

#include #include using namespace std;

const double pi = acos(-1.0);

int main()

else

return 0;

}

計算幾何 記錄求兩球體相交部分體積(球缺)模板

include include include include define clr a,b memset a,b,sizeof a const int inf 0x3f3f3f3f using namespace std const double pi acos 1.0 typedef unsig...

球的體積交和並

某天lililalala正在玩一種奇妙的吃雞遊戲 因為在這個遊戲裡會同時有兩個圓形安全區 他們可能相交 lililalala覺得求圓的面積並太簡單了,所以想把這個問題公升級一下。現在在三維空間裡有 2 個球形安全區,分別用四元組 和 表示,其中 r1 r2表示球半徑,x1,y1,z1 和 x2,y2...

球球的體積。HDU 2002

problem description 根據輸入的半徑值,計算球的體積。input 輸入資料有多組,每組佔一行,每行包括乙個實數,表示球的半徑。output 輸出對應的球的體積,對於每組輸入資料,輸出一行,計算結果保留三位小數。sample input1 1.5sample output 4.189...