• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

MATLAB——patch绘制多边形

人工智能 懒小象 3070次浏览 0个评论

文章目录

 

  • patch原理
    • patch函数
    • 实例
      • 定义顶点
      • 连接顺序
      • 顶点对应点坐标
      • 最终代码
      • 效果

 

patch原理

 

patch函数

 

patch(X,Y,C)

  使用 X 和 Y 的元素作为每个顶点的坐标,以创建一个或多个填充多边形。patch 以您指定顶点的顺序连接这些顶点。要创建一个多边形,请将 X 和 Y 指定为向量。要创建多个多边形,请将 X 和 Y 指定为矩阵,其中每一列对应于一个多边形。C 决定多边形的颜色。  

patch(X,Y,Z,C) 

  使用 X、Y 和 Z 在三维坐标中创建多边形。要在三维视图中查看这些多边形,请使用 view(3) 命令。C 确定多边形的颜色。  

patch('XData',X,'YData',Y)

  类似于 patch(X,Y,C),不同之处在于您不需要为二维坐标指定颜色数据。  

patch('XData',X,'YData',Y,'ZData',Z)

 

patch('Faces',F,'Vertices',V) 

  创建一个或多个多边形,其中 V 指定顶点的值,F 定义要连接的顶点。当有多个多边形时,仅指定唯一顶点及其连接矩阵可以减小数据大小。为 V 中的每个行指定一个顶点。要创建一个多边形,请将 F 指定为向量。要创建多个多边形,请将 F 指定为矩阵,其中一行对应于一个多边形。不要求每个面都具有相同的顶点数。要指定不同数量的顶点,请以 NaN 值填充 F。  

patch(S) 

  使用结构体 S 创建一个或多个多边形。结构体字段对应于补片属性名称,字段值对应于属性值。例如,S 可以包含字段 Faces 和 Vertices。  

patch(___,Name,Value)

  创建多边形,并使用名称-值对组参数指定一个或多个补片属性。补片是包含所有已创建多边形的数据的对象。您可以使用上述语法中的任意输入参数组合指定补片属性。例如,‘LineWidth’,2 将所有多边形的轮廓宽度设置为 2 磅。  

patch(ax,___) 

  将在由 ax 指定的坐标区中,而不是当前坐标区 (gca) 中创建补片。选项 ax 可以位于前面的语法中的任何输入参数组合之前。  

p = patch(___) 

 

  1.   返回包含所有多边形的数据的补片对象。使用 p 可在创建补片对象后查询并修改其属性。有关属性和说明的列表,请参阅 Patch 属性。

 

实例

  在此使用 patch(‘Faces’,F,‘Vertices’,V) 函数绘制长方体。  

定义顶点

长方体的顶点定义如下图所示,红色编号为顶点的编号。  
MATLAB——patch绘制多边形  

连接顺序

定义连接顺序如下,对应上图看  

faces = [1 2 3 4
        5 6 7 8
        4 3 6 5
        3 2 7 6
        2 1 8 7
        1 4 5 8];

  连接顺序为:  

  1. 上面1->2->3->4顶点
  2. 下面->5->6->7->8顶点
  3. 后面->4->3->6->5顶点
  4. 右面->3->2->7->6顶点
  5. 前面->2->1->8->7顶点
  6. 左面->1->4->5->8顶点

 

顶点对应点坐标

各顶点坐标如下,其中x表示按照图中顶点ID排序的情况下,各顶点的x坐标,同理可得y,z坐标向量,其中SL为尺度,即长宽高。  

x = 0.5*SL(1)*[-1 1 1 -1 -1 1 1 -1]';
y = 0.5*SL(2)*[1 1 1 1 -1 -1 -1 -1]';
z = 0.5*SL(3)*[-1 -1 1 1 1 1 -1 -1]';
verts = zeros(3,8);
for i = 1:8
    verts(1:3,i) = [x(i);y(i);z(i)];
end

 

最终代码

 

SL = [1;1;1];
x = 0.5*SL(1)*[-1 1 1 -1 -1 1 1 -1]';
y = 0.5*SL(2)*[1 1 1 1 -1 -1 -1 -1]';
z = 0.5*SL(3)*[-1 -1 1 1 1 1 -1 -1]';

verts = zeros(3,8);
for i = 1:8
    verts(1:3,i) = [x(i);y(i);z(i)];
end

faces = [1 2 3 4
        5 6 7 8
        4 3 6 5
        3 2 7 6
        2 1 8 7
        1 4 5 8];
patch('Faces',faces,'Vertices',verts','FaceAlpha',0.1)    
view(3)

 

效果

呈现的效果如下: 长方体的顶点定义如下图所示,红色编号为顶点的编号。  
MATLAB——patch绘制多边形   如果想要旋转和移动,请移步博客:MATLAB——patch绘制长方体(cuboid)+长方体平移+长方体旋转


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明MATLAB——patch绘制多边形
喜欢 (0)

您必须 登录 才能发表评论!

加载中……