如何在 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