Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

reducepatch

缩减补片面的数量

语法

reducepatch(p,r)
nfv = reducepatch(p,r)
nfv = reducepatch(fv,r)
nfv = reducepatch(p)
nfv = reducepatch(fv)
reducepatch(...,'fast')
reducepatch(...,'verbose')
nfv = reducepatch(f,v,r)
[nf,nv] = reducepatch(...)

说明

reducepatch(p,r) 缩减句柄 p 标识的补片的面数,同时尝试保留原始对象的整体形状。MATLAB® 软件通过以下两种方式之一解释缩减因子 r,具体取决于其值:

  • 如果 r 小于 1,则将 r 解释为原始面数的比率。例如,如果您将 r 指定为 0.2,则面数缩减到原始补片数的 20%。

  • 如果 r 大于或等于 1,则 r 是目标面数。例如,如果您将 r 指定为 400,则将面数缩减至 400 面。

nfv = reducepatch(p,r) 返回缩减的面和顶点集合,但不设置补片 pFacesVertices 属性。结构体 nfv 包含缩减后的面和顶点。

nfv = reducepatch(fv,r) 对结构体 fv 中的面和顶点执行缩减操作。

nfv = reducepatch(p)nfv = reducepatch(fv) 使用缩减值 0.5

reducepatch(...,'fast') 假设顶点是唯一的并且不计算共享顶点。

reducepatch(...,'verbose') 在计算过程中将进度消息输出至命令行窗。

nfv = reducepatch(f,v,r)f 中的面和 v 中的顶点执行缩减操作。

[nf,nv] = reducepatch(...) 在数组 nfnv 中返回面和顶点。

示例

全部折叠

本示例将介绍将面数缩减到仅原始值的 15% 时的效果。

figure
[x,y,z,v] = flow;
p = patch(isosurface(x,y,z,v,-3));
p.FaceColor = 'w';
p.EdgeColor = 'b';
daspect([1,1,1])
view(3)

Figure contains an axes object. The axes object contains an object of type patch.

化简面数。

reducepatch(p,0.15)

Figure contains an axes object. The axes object contains an object of type patch.

提示

如果补片包含非共享顶点,则 MATLAB 在缩减面数之前会计算共享顶点。如果补片的面不是三角形,则 MATLAB 在缩减前对各面执行三角剖分。返回的面始终作为三角形定义。

输出三角形的数量可能不完全与通过缩减因子参数 (r) 指定的数量相同,尤其是当原始补片的面不是三角形时更是如此。

扩展功能

版本历史记录

在 R2006a 之前推出