Class: TriRep

(Not recommended) Facets referenced by only one simplex


FF = freeBoundary(TR)
[FF XF] = freeBoundary(TR)


FF = freeBoundary(TR) returns a matrix FF that represents the free boundary facets of the triangulation. A facet is on the free boundary if it is referenced by only one simplex (triangle/tetrahedron, etc). FF is of size m-by-n, where m is the number of boundary facets and n is the number of vertices per facet. The vertices of the facets index into the array of points representing the vertex coordinates TR.X. The array FF could be empty as in the case of a triangular mesh representing the surface of a sphere.

[FF XF] = freeBoundary(TR) returns a matrix of free boundary facets

Input Arguments

TRTriangulation representation.

Output Arguments

FFFF that has vertices defined in terms of a compact array of coordinates XF.
XFXF is of size m-by-ndim where m is the number of free facets, and ndim is the dimension of the space where the triangulation resides


A simplex is a triangle/tetrahedron or higher-dimensional equivalent. A facet is an edge of a triangle or a face of a tetrahedron.


Example 1

Use TriRep to compute the boundary triangulation of an imported triangulation.

Load a 3-D triangulation:

load tetmesh;
trep = TriRep(tet, X);

Compute the boundary triangulation:

 [tri xf] = freeBoundary(trep);

Plot the boundary triangulation:

trisurf(tri, xf(:,1),xf(:,2),xf(:,3), ...
     'FaceColor','cyan', 'FaceAlpha', 0.8);

Example 2

Perform a direct query of a 2-D triangulation created with DelaunayTri.

Plot the mesh:

 x = rand(20,1);
 y = rand(20,1);
 dt = DelaunayTri(x,y);
 fe = freeBoundary(dt)';
 hold on;

Display the free boundary edges in red:

plot(x(fe), y(fe), '-r', 'LineWidth',2) ; 
hold off;

In this instance the free edges correspond to the convex hull of (x, y).

Was this topic helpful?