日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

求两个球的体积并

發布時間:2023/12/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 求两个球的体积并 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

兩個球和兩個圓一樣,有三種情況。相交,分離(包括兩種情況)
對于分離的兩種情況,好計算。但是對于相交的情況,不好計算。需要計算球冠的大小。


就是這樣。昨天晚上牛客上有一個關于這樣的題
代碼如下:

#include<bits/stdc++.h> using namespace std; const double PI = acos(-1.0); double x1,y11,z1,r1; double x2,y2,z2,r2; //球冠的體積:PI*h*h/(3*r-h)其中h是圓的半徑r-圓心到截圓的平面的距離dis。h1=r1-(r1*r1-r2*r2+d*d)/(2*d)其中d為兩圓心之間的距離。 int main() {scanf("%lf%lf%lf%lf",&x1,&y11,&z1,&r1);scanf("%lf%lf%lf%lf",&x2,&y2,&z2,&r2);double dis=sqrt((x1-x2)*(x1-x2)+(y11-y2)*(y11-y2)+(z1-z2)*(z1-z2));if(dis>=r1+r2){double s=4.0/3.0*PI*(r1*r1*r1+r2*r2*r2);printf("%.7lf\n",s);}else if(dis<=fabs(r1-r2)){double maxn=max(r1,r2);double s=4.0/3.0*PI*(maxn*maxn*maxn);printf("%.7lf\n",s);}else{double s=3.0/4.0*PI*(r1*r1*r1+r2*r2*r2);double h1=r1-(r1*r1-r2*r2+dis*dis)/(2*dis);s-=(PI*h1*h1*(3*r1-h1)/3.0);double h2=r2-(r2*r2-r1*r1+dis*dis)/(2.0*dis);s-=(PI*h2*h2*(3*r2-h2)/3.0);printf("%.7lf\n",s);} }

還是把公式記住,要不比賽的時候自己推太麻煩了。
球冠的體積:PIhh/(3r-h)其中h是圓的半徑r-圓心到截圓的平面的距離dis。h1=r1-(r1r1-r2r2+dd)/(2*d)其中d為兩圓心之間的距離
努力加油a啊(o)/~

總結

以上是生活随笔為你收集整理的求两个球的体积并的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。