微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 MATLAB/OCTAVE 中创建一个带孔的矩形?

如何解决如何在 MATLAB/OCTAVE 中创建一个带孔的矩形?

我想在 MATLAB 或 OCTAVE 中准确地绘制/绘制这个形状。当然,我知道如何绘图,以及如何使用绘图、线条或矩形函数创建矩形。但是我还没有设法在矩形的顶部添加这个“洞”。我想,它是一个半径为 0.5 且中心点为 (1.5|2) 的(半)圆。在 OCTAVE 中,有一个 drawCircleArc 函数,但我不想只画那个东西,还要有必要的坐标来定义整个形状以供进一步操作。

The desired rectangle with a "hole".

解决方法

这是一种方法(matlab/octave 兼容)

% Specify all polygon points,excluding the semi-circle outline
  X = [1,3,2];
  Y = [2,2,2];

% Add semi-circle outline to array of polygon points
  t = 0 : -0.01 : -pi;
  X = [X,1.5 + 0.5 * cos(t)];
  Y = [Y,2   + 0.5 * sin(t)];

% Use fill to plot the filled polygon,with desired settings
  fill( X,Y,[0.8,0.8,0.8],'linewidth',1.5 );
  axis( [-2,4,-2,4] );   axis equal;
,

从 2017b 开始,您还可以使用 polyshapeboolean operators

rect = polyshape([0 3 3 0],[0 0 2 2]);
t = linspace(0,2*pi,32);
circ = polyshape(1.5+.5*cos(t),2+.5*sin(t));
subplot 121,hold on
plot(rect)
plot(circ)
axis equal

shape = subtract(rect,circ);
subplot 122
plot(shape)
axis equal

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。