1、基本流程
- 用
polyshape
创建由二维顶点定义的多边形,就是在matlab里定义个多边形,而不仅仅是x、y两列数。 - 用
polybuffer
创建缓冲区,这个缓冲区的边界,即该多边形等距缩放后的边界。
polyin = polyshape(x,y);
polyout = polybuffer(polyin,d) ;
- d > 0,边界向外扩大 d 个单位;
- d < 0 ,边界向内缩小。
2、代码
% [1] 给定边界坐标
t = 0.05:0.5:2*pi;
x1 = cos(t);
y1 = sin(t);
x2 = 0.5*cos(t);
y2 = 0.5*sin(t);
% [2] 用 polyshape 创建多边形
polyin = polyshape({x1,x2},{y1,y2});
% [3] 创建缓冲区 —— d = 0.1 > 0, 为外扩
polyout = polybuffer(polyin,0.1);
% [4] 得到缓冲区边界
new_boundary = polyout.Vertices;
% [5]绘图
figure
plot(polyin,'facecolor',[101 147 80]/256); % 原多边形区域
hold on
axis equal
plot(polyout,'facecolor',[124 191 160]/256,'linestyle','none'); % 扩展后多边形区域
plot(new_boundary(:,1),new_boundary(:,2),'k.');% 黑点为外扩后得到的缓冲区边界点
3、结果(图)
- 绿色为外扩图(d > 0)
黑实线:原多边形边界
浅绿:缓冲区,即外扩区
- 粉色为内缩图(d < 0)