1. triangulation
TR = triangulation(T,P)
先解释参数 P
再解释 T
好理解一些
P
: 表示点的集合,以矩阵形式指定,矩阵的列对应于三角剖分点的 x 坐标、y 坐标和(可能的)z 坐标。P 的行号是三角剖分中的顶点 ID。T
: 三角剖分连接列表,指定为 m×n 的矩阵,其中 m 是三角形或四面体的数量,n 是每个三角形或四面体的顶点数量。T 的每行包含用于定义三角形或四面体的顶点 ID。顶点 ID 是输入点的行号。三角剖分中三角形或四面体的 ID 是 T 中的对应行号。
% 有四个二维节点,坐标分别为 (2.5, 8.0) (6.5, 8.0) (2.5, 5.0) (6.5, 5.0)
P = [2.5 8.0;
6.5 8.0;
2.5 5.0;
6.5 5.0];
% 有四个三维节点,坐标分别为 (2.5, 8.0, 1) (6.5, 8.0, 2) (2.5, 5.0, 3) (6.5, 5.0, 4)
P = [2.5 8.0 1;
6.5 8.0 2;
2.5 5.0 3;
6.5 5.0 4];
% 四个节点共组成了2个三角形,其连接关系为:1-4-3,2-3-1
% 1-4-3 意思是 (2.5, 8.0)-(6.5, 5.0)-(2.5, 5.0)
T = [1 4 3;
2 3 1];
TR = triangulation(T,P);
构成的 TR 对象具有两个属性:
-
Points - 三角剖分点
– 三角剖分点,表示为具有以下特征的矩阵:
– TR.Points 中的每行包含顶点坐标。
– TR.Points 的每个行号是一个顶点 ID。 -
ConnectivityList - 三角剖分连接列表
– 三角剖分连接列表,以具有下列特征的矩阵的形式表示:
– TR.ConnectivityList 中的每个元素是顶点 ID。
– 每行代表三角剖分中的一个三角形或四面体。
– TR.ConnectivityList 的每个行号是一个三角形或四面体 ID。
TR_Points = TR.Points;
TR_CL = TR.ConnectivityList;
TR_Points =
2.5000 8.0000 1.0000
6.5000 8.0000 2.0000
2.5000 5.0000 3.0000
6.5000 5.0000 4.0000
TR_CL =
1 4 3
2 3 1
2. stlwrite()
stlwrite(TR,filename)
stlwrite(TR,filename,fileformat)
filename
: 保存的文件名字,可以为 ‘xxx.stl’fileformat
: 指定写入文件的文件格式,fileformat 可以是 ‘binary’(默认值)或 ‘text’。
stlwrite(TR,'tritext.stl','text')
使用三维软件打开后,可以看到保存的文件 tritext.stl 如下图所示
3. stlread()
TR = stlread('tristltext.stl');
TR = stlread('tristltext.stl');
TR_Points = TR.Points;
TR_CL = TR.ConnectivityList;
TR_Points =
2.5000 8.0000 1.0000
6.5000 5.0000 4.0000
2.5000 5.0000 3.0000
6.5000 8.0000 2.0000
TR_CL =
1 2 3
1 3 4
注意:重新打开后生成的 TR 对象,节点的顺序与最早的定义顺序不同,连接关系也变了。但是也只是顺序和连接关系表示顺序不同,模型本质还是一样的。
4. triplot()
triplot(TR)
绘制由二维 triangulation 或 delaunayTriangulation 对象定义的三角形。
5. patch()
此函数主要功能为绘制一个或多个填充多边形区域。
patch(X,Y,C)
patch(X,Y,Z,C)
patch('XData',X,'YData',Y)
patch('XData',X,'YData',Y,'ZData',Z)
- 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(X,Y,Z,C),不同的是不需要为三维坐标指定颜色数据。
注意,当使用 ‘XData’、‘YData’ 或 ‘ZData’ 名称-值参数指定数据时,数据必须为数值类型,如 double、single 或整数类型。要指定 categorical、datetime 或 duration 数据,请使用 x、y 和 z 参数。
patch('Vertices',V, 'Faces',F)
- patch(‘Vertices’,V, ‘Faces’,F) 创建一个或多个多边形,其中 V 指定顶点的值,F 定义要连接的顶点。
- 当有多个多边形时,仅指定唯一顶点及其连接矩阵可以减小数据大小。为 V 中的每个行指定一个顶点。要创建一个多边形,请将 F 指定为向量。要创建多个多边形,请将 F 指定为矩阵,其中一行对应于一个多边形。不要求每个面都具有相同的顶点数。要指定不同数量的顶点,请以 NaN 值填充 F。
patch(S)
- patch(S) 使用结构体 S 创建一个或多个多边形。结构体字段对应于补片属性名称,字段值对应于属性值。例如,S 可以包含字段 Faces 和 Vertices。
patch(___,Name,Value)
patch(ax,___)
- patch(___,Name,Value) 创建多边形,并使用名称-值对组参数指定一个或多个补片属性。补片是包含所有已创建多边形的数据的对象。您可以使用上述语法中的任意输入参数组合指定补片属性。例如,‘LineWidth’,2 将所有多边形的轮廓宽度设置为 2 磅。
- patch(ax,___) 将在由 ax 指定的坐标区中,而不是当前坐标区 (gca) 中创建补片。选项 ax 可以位于前面的语法中的任何输入参数组合之前。
p = patch(___)
- p = patch(___) 返回包含所有多边形的数据的补片对象。使用 p 可在创建补片对象后查询并修改其属性。有关属性和描述的列表,请参阅 Patch 属性。