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)

化简面数。

reducepatch(p,0.15)

提示

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

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

扩展功能

版本历史记录

在 R2006a 之前推出