兩個圓柱相交的體積 UVALive 5096 Volume
阿新 • • 發佈:2019-02-07
本部落格主要討論從積分和非積分方式計算兩個圓柱體交集的體積。由於博主的高數很爛,有什麼不得當的地方還望大家指出來。
兩個圓柱相交:
不難發現相交有兩種情況,如圖所示是
我們先暫且不考慮第二種
這個叫做牟合方蓋。通過百度不難發現它的體積公式為
先考慮它的
單獨把A圖拿出來,想象有一個平面在離地為h的地方去切割這個交集。
不難證明切割出來的圖形是一個正方形,邊長為
積分太複雜,我們用類似於小學數學的方法,假設這個1/8體積被關在一個邊長為R的正方體內,延展截面與正方體相交,可以得到正方體與圓柱交集之間的面積是
如果是第二種情況,兩個圓柱體的交集不再是一個“牟合方蓋”,而是牟合方蓋的一部分,你可以想象成兩個圓盤相交部分的體積,中間一段是一個長方體,而端點是牟合方蓋的兩端。
我們同樣先計算1/8的體積。那麼長方體長
加上長方體體積
程式碼如下:
#include<cstdio>
#include<cmath>
using namespace std;
const double pi = 3.14159265358979 ;
int main()
{
double r,h;
while(scanf("%lf%lf",&r,&h) != EOF)
{
double v = 2*pi*r*r*h;
if(2.0*r < h)
printf("%.4lf\n",v-16*r*r*r/3);
else
{
double l = sqrt(r*r-(h/2.0)*(h/2.0));
double smouhefanggai = 2*r*r*r/3-(r*r*l-l*l*l/3);
printf("%.4lf\n",v-8*(smouhefanggai+l*(h/2)*(h/2)));
}
}
}