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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

平面上有两个圆相交,求两个圆相交部分的面积

發布時間:2024/1/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 平面上有两个圆相交,求两个圆相交部分的面积 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

平面上有兩個圓相交,求兩個圓相交部分的面積

又學習了一遍算法,感觸頗深,也對算法有了更進一步的認識,記錄一下這次的學習,希望能幫到有需要的人。
輸入:六個參數:第一個圓的圓心坐標,半徑,第二個圓的圓心坐標,半徑。
輸出:返回相交部分的面積,若不相交,則返回0,并提示兩圓無相交。
分析:平面上有兩個圓相交,求兩個圓相交部分的面積,如下圖所示。

首先,需要判斷兩個圓是否相交,若不相交,則返回0,若相交,則要求出相交部分的面積,可以用兩個扇形的面積減去四邊形的面積,其中,兩個扇形分別為兩個圓心與兩個圓相交點所組成的扇形,四邊形則是兩個圓心與相交點所構成的四邊形。需要注意的是,這里的四邊形不一定為凸四邊形,所以這里的四邊形面積可以利用海倫公式來進行計算,其次,這里扇形的圓心角不一定為銳角,所以,在計算扇形面積的時候,可以利用余弦定理來進行計算。
其中,海倫公式為:
,其中
,,a、b、c分別為平面內三角形三邊邊長。余弦定理為:
,其中各個字母表示如下圖所示:

程序流程圖如下:

public class IntersectionCircles {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);double x1 = scanner.nextDouble();double y1 = scanner.nextDouble();double r1 = scanner.nextDouble();double x2 = scanner.nextDouble();double y2 = scanner.nextDouble();double r2 = scanner.nextDouble();double s = instersection(x1,y1,r1,x2,y2,r2);if(s==0){System.out.println("兩個圓不相交!");}else{System.out.println("兩個圓相交的面積等于:"+s);}scanner.close();}private static double instersection(double x1,double y1,double r1,double x2,double y2,double r2){double p,s;double ans;//表示相交的面積//表示兩圓心之間的距離double len = Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); if(len >= r1+r2){//表示兩圓不相交ans = 0;}else if(len <= Math.abs(r1-r2)){//包含了if(r1 < r2){ans = Math.PI*r1*r1;}else{ans = Math.PI*r2*r2;}}else{p = (len+r1+r2)/2;s = 2*Math.sqrt(p*(p-len)*(p-r1)*(p-r2));//海倫公式求四邊形面積//余弦定理求扇形面積 ans=Math.acos((r1*r1+len*len-r2*r2)/(2*r1*len))*r1*r1+Math.acos((r2*r2+len*len-r1*r1)/(2*r2*len))*r2*r2-s;}return ans;} }

總結

以上是生活随笔為你收集整理的平面上有两个圆相交,求两个圆相交部分的面积的全部內容,希望文章能夠幫你解決所遇到的問題。

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