我一直在使用函数文件[ret]=drawellipse(x,y,a,b,angle,steps,color,img)
。通过脚本文件调用函数在图像中绘制随机椭圆。但是一旦我设置了随机中心点(x,y)和随机a,b,椭圆相交的可能性很大。如何防止交叉路口?(我应该画出彼此分离的椭圆)好吧,在这里我有一个函数文件,用于检查椭圆是否重叠,overlap = overlap_ellipses(x0,y0,a0,b0,angle0,x1,y1,a1,b1,angle1)
. 如果两个椭圆重叠,则'overlap=1',否则'overlap=0'。基于所有这些,我在命令窗口中进行了测试:
x=rand(4,1)*400; % x and y are the random coodinates for the center of ellipses
y=rand(4,1)*400;
a=[50 69 30 60]; % major axis for a and b, i intend to use random also in the future
b=[20 40 10 40]; % minor axis
angle=[30 90 45 0]; % angle of ellipse
steps=10000;
color=[255 0 0]; % inputs for another function file to draw the ellipse
img=zeros(500,500,3);
下面我想显示椭圆if overlap==0
,'如果重叠==1',减少a和b,直到没有交集。最后,要显示 img。
for i=1:length(x)
img=drawellipse(x(i),y(i),a(i),b(i),angle(i),steps,color,img);
end
现在对我来说,我很难编写中间部分。我如何使用 if 语句来获取值overlap
以及如何使索引对应于我需要绘制的椭圆。
我测试了一下
for k=1:(length(x)-1)
overlap = overlap_ellipses(x(1),y(1),a(1),b(1),angle(1),x(1+k),y(1+k),a(1+k),b(1+k),angle(1+k))
end
它返回
overlap=0
overlap=0
overlap=1
它不是 [0 0 1]。我无法弄清楚,因此卡在了这个过程中。最终的图像应该看起来像这个voronoi 椭圆图中的图片。(任何两个椭圆之间没有交集)