我有一个对象的两个二进制圈。他们没有连接在一起。我完成了圆圈的填充颜色。现在,我想将相同的颜色填充到两个不能连接在一起的圆圈中。这是我的代码。但它确实有效。你可以编辑帮帮我吗?
figure
[xx yy] = meshgrid(1:384,1:384);
phi1 = (sqrt(((xx - 190).^2 + (yy - 260).^2 )) - 15);
phi2 = (sqrt(((xx - 270).^2 + (yy - 200).^2 )) - 20);
phi= sign(phi1).*sign(phi2);
phi(phi==-1)=0;
imshow(phi);
cont = contourc(phi, [0 0])';
cont = cont(2 : end, :);
patch(cont(:, 1), cont(:, 2), 'g', 'EdgeColor', 'w')
答案 0 :(得分:0)
这是一个绘制实心圆圈的小脚本。您可以将其变为函数,并使用hold on
和hold off
绘制多个圆圈。
r = 2;
xc = 1;
yc = 1;
st = r/100;
x1 = (-r+xc):st:(r+xc);
y1 = yc+sqrt(r^2-(x1-xc).^2);
x2 = x1(end:-1:1);
y2 = yc-sqrt(r^2-(x2-xc).^2);
x = [x1 x2];
y = [y1 y2];
patch(x,y,'g','FaceColor', 'g');
答案 1 :(得分:0)
如果要使用曲线的隐式定义创建更一般的形状,以下也适用:
[xx, yy] = meshgrid(1:384,1:384);
phi1 = 15^2 < ((xx-190).^2 + (yy-260).^2);
phi2 = 20^2 < ((xx-270).^2 + (yy-200).^2);
phi = phi1 .* phi2;
contourf(phi, [0,1]);
colormap([0,1,0;1,1,1]);