请教:请问matlab中如何求三个圆的公共区域

来源:百度知道 编辑:UC知道 时间:2024/06/13 21:23:11
如图中的蓝色部分,三个圆的方程如图

不是很精确!
马马虎虎吧。

x1=0;y1=0;r1=2;
x2=3;y2=0;r2=2;
x3=1.5;y3=2;r3=1;

figure;
hold on
axis equal
seta=0:0.01:2*pi;
x=x1+r1*cos(seta);y=y1+r1*sin(seta);
plot(x,y)
x=x2+r2*cos(seta);y=y2+r2*sin(seta);
plot(x,y)
x=x3+r3*cos(seta);y=y3+r3*sin(seta);
plot(x,y)

left=min(min(x1,x2),x3);
right=max(max(x1,x2),x3);
bottom=min(min(y1,y2),y3);
top=max(max(y1,y2),y3);
n=100; %要加密,增大这个值
[xx,yy]=meshgrid(linspace(left,right,n),linspace(bottom,top,n));
flag=((xx-x1).^2+(yy-y1).^2<r1^2)&((xx-x2).^2+(yy-y2).^2<r2^2)&((xx-x3).^2+(yy-y3).^2<r3^2);
xx(~flag)=NaN;
yy(~flag)=NaN;
plot(xx,yy,'r.')

这个 还不简单啊!
你想要个判断条件还是要一个函数?
比方说一个函数 判断给定点是否在该区域
LZ 意义表达不明确阿!