Main Content

boundaryFacets

alpha 形状的边界面

说明

示例

bf = boundaryFacets(shp) 返回一个表示构成 alpha 形状边界的各个面的矩阵。这些面表示二维形状中的边分段和三维形状中的三角形。这些面的顶点创建指向 shp.Points 矩阵的索引。

bf = boundaryFacets(shp,RegionID) 返回 alpha 形状的某个区域的边界面。RegionID 是该区域的 ID 并且 1RegionIDnumRegions(shp)

[bf,P] = boundaryFacets(___) 支持任何上述语法,且返回一个顶点坐标矩阵 P

示例

全部折叠

创建一个三维点集。

[x1, y1, z1] = sphere(24);
x1 = x1(:);
y1 = y1(:);
z1 = z1(:);
x2 = x1+5;
P = [x1 y1 z1; x2 y1 z1];
P = unique(P,'rows');

使用 alpha 半径 1.5 创建并绘制一个 alpha 形状。

shp = alphaShape(P,1.5);
plot(shp)
axis equal

计算 alpha 形状并且仅绘制其边界。

[tri, xyz] = boundaryFacets(shp);
trisurf(tri,xyz(:,1),xyz(:,2),xyz(:,3),...
    'FaceColor','cyan','FaceAlpha',0.3) 
axis equal

输入参数

全部折叠

alpha 形状,指定为 alphaShape 对象。有关详细信息,请参阅 alphaShape

示例: shp = alphaShape(x,y) 根据 (x,y) 点坐标创建一个二维 alphaShape 对象。

alpha 形状中区域的 ID 编号,指定为介于 1numRegions(shp) 之间的一个正整数标量。

alpha 形状可以包含多个较小的区域,具体取决于点集和参数。其中每个较小的区域都分配有一个唯一的 RegionID,以便于依照从最大面积或体积到最小面积或体积的顺序对这些区域进行编号。例如,考虑使用包含两个区域的三维 alpha 形状。体积较大的区域的 RegionID 为 1,较小区域的 RegionID 为 2。

示例: shp.RegionThreshold = area(shp,numRegions(shp)-2); 隐藏二维 alpha 形状 shp 中的两个最小区域。

数据类型: double

输出参量

全部折叠

以矩阵形式返回的边界面。bf 的大小是 m×n,其中 m 是边界面数,n 是每个面的顶点数。

以矩阵形式返回的顶点坐标。P 的大小为 N×dim,其中 N 为 alpha 形状边界上的点数,dim23(对于二维或三维 alpha 形状)。

版本历史记录

在 R2014b 中推出

另请参阅

| |