matlab - 多边形等距缩放 ( polyshape + polybuffer)

1、基本流程

  1. polyshape 创建由二维顶点定义的多边形,就是在matlab里定义个多边形,而不仅仅是x、y两列数。
  2. 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)
    等距内缩
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB中,polyshape函数可用于创建由二维顶点定义的多边形,并返回一个polyshape对象,该对象具有描述其顶点、实心区域和孔的各种属性。例如,你可以使用polyshape函数创建一个由四个点(0,1)、(0,0)、(1,0)和(1,1)定义的实心正方形,代码如下: poly1 = polyshape([0 0 1 1],[1 0 0 1]) 此外,你还可以使用intersect函数对polyshape对象进行相交运算,找出重叠部分。在给定的示例代码中,使用polyshape函数创建了四个多边形poly1、poly2、poly3和poly4,然后使用intersect函数对它们进行相交运算,得到了重叠部分polyout3。 你可以使用plot函数绘制原始图形和重叠部分图形,代码中已经提供了相应的绘图部分。 如果你想获取重叠部分的坐标,可以使用polyout3.Vertices属性,它返回重叠部分多边形的顶点坐标。 另外,你还可以使用polyout3.area属性获取重叠部分的面积。 综上所述,MATLAB中的polyshape函数可以用于创建和操作二维多边形,包括计算重叠部分和获取相关属性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [应用 matlab二维图形 于版图设计](https://blog.csdn.net/AotianTvT/article/details/123215238)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [matlab计算多重复杂多边形重叠面积](https://blog.csdn.net/rz1314/article/details/129712675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值