目标:在限定区域求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 编辑]