matlab计算圆重叠面积,matlab求n个相交圆的面积

目标:在限定区域求n=20个圆的覆盖面积

圆心随机抛洒,存在两方面的问题:1)圆心所在的覆盖圆盘处于边界区域,覆盖范围越界

2)圆与圆之间相交,存在覆盖面积的重复

必须减去这2部分的越界和重复面积。

问题:相交圆面积求解时,分别以第一个圆心与其他点判断欧氏距离d,d<2R时候相交 可以几何知识求解。当考虑3圆4圆n个圆相交,如何求其覆盖面积

程序如下:

clear

R=10;

A=rand(20,2)*100;

S1=20*pi*(R^2);%20个节点的不考虑冗余覆盖所占面积

%%%%%冗余边界的计算

S2=[];

x=A(:,1);

y=A(:,2);

%%%%%%%%%%%%%考虑越界部分的面积

for i=1:20

if x(i)<10 & 10

%y(i)

a=acos((x(i))/R);

S3=a*R^2-R*sin(a)*x(i);

S2=[S2,S3];

elseif x(i)>90 & 10

x1(i)=100-x(i);

a=acos((x1(i))/R);

S3=a*R^2-R*sin(a)*x1(i);

S2=[S2,S3];

elseif y(i)<10 & 10

b=acos(y(i)/R);

S3=b*R^2-R*sin(b)*y(i);

S2=[S2,S3];

elseif y(i)>90 & 10

y1(i)=100-y(i);

b=acos(y1(i)/R);

S3=b*R^2-R*sin(b)*y1(i);

S2=[S2,S3];

elseif x(i)<10 & y(i)<10

a=acos(x(i)/R);

b=acos(y(i)/R);

S3=0.5*(a+b+0.5*pi)*R^2-(x(i)*y(i)+0.5*x(i)*R*sin(a)+0.5*y(i)*R*sin(b));

S2=[S2,S3];

elseif x(i)>90 & y(i)>90

x1(i)=100-x(i);

y1(i)=100-y(i);

S3=0.5*(a+b+0.5*pi)*R^2-(x1(i)*y1(i)+0.5*x1(i)*R*sin(a)+0.5*y1(i)*R*sin(b));

S2=[S2,S3];

end

end

%%%%%%%%%%%%计算相交圆的冗余%%%%%%%%%%%%%%%只是考虑2圆相交,SOS 3圆、4圆……n圆相交

S4=[];

for e=1:19

for i=(e+1):20

d=sqrt((x(e)-x(i))^2+(y(e)-y(i))^2);

if d

a=acos(d/(2*R));

S5=2*a*(R^2)-R*sin(a)*d;

S4=[S4,S5];

end

end

end

S=S1-sum(S2)-sum(S4)

[本帖最后由 fdtfd888 于 2010-10-8 10:22 编辑]

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值