java判断两圆是否相交以及相交的面积大小。
关注:122 答案:3 信息版本:手机版 电脑版
解决时间 2021-01-31 15:49
提问者一段小時光
2021-01-30 21:28
public class Circle {
double _x;
double _y;
double _r;
Color _c;
Circle(double x,double y,double r,Color c){
_x=x;
_y=y;
_r=r;
_c=c; }
void edgeColor(){
cpDraw.setPenColor(_c);
};
void filledColor(Color fc){
cpDraw.setPenColor(fc);
cpDraw.FilledCircle(_x, _y, _r
);
}
double Area()
{
return Math.PI*_r*_r;
}
以上有Circle函数及求面积的函数,刚刚学JAVA的菜鸟请教各位大大判断两圆相交和相交面积的函数如何写,谢谢~越简单的越好,花哨了看不明白……
最佳答案
二级知识专家無字情書
2021-01-30 22:48
boolean isIntersecting(Circle c){
return Math.sqrt((_x-c._x)*(_x-c._x)+(_y-c._y)*(_y-c._y))<=_r+c._r;
}
double sharedArea(Circle c){
double alpha,area;
double d=Math.sqrt((_x-c._x)*(_x-c._x)+(_y-c._y)*(_y-c._y));//两圆心距离
if(d>_r+c._r){
return 0;
}
alpha=Math.acos((d*d+_r*_r-c._r*c._r)/(2*d*_r));//余弦定理取得相交弧所对本圆的圆心角
area=alpha*_r*_r;//本圆扇形面积
alpha=Math.acos((d*d+c._r*c._r-_r*_r)/(2*d*c._r));//余弦定理取得相交弧所对另一圆的圆心角
area+=alpha*c._r*c._r;//另一圆的扇形面积
double s=(d+_r+c._r)/2;//海伦公式之s
area-=Math.sqrt(s*(s-d)*(s-_r)*(s-c._r))*2;//两扇形面积减去两三角形面积即为交集
return area;
}
全部回答
1楼X謝你的出現
2021-01-31 01:00
你好!
可以判断两圆圆心的距离,如果距离大于两圆的半径之和,这两圆不相交,相反则相交;
求面积则有点麻烦,先求相交两点的夹角,分别求出该夹角对应扇形的面积,然后减去三角形的面积便是相交面积。
希望对你有所帮助,望采纳。
2楼若爱会伤
2021-01-31 00:00
呵呵 ,求面积可以用二个圆的面积可以用一个扇形的面积减去三角形面积X2
我要举报
如以上信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
推荐资讯
大家都在看