www.gusucode.com > matlab 案例源码 matlab代码程序 > matlab/ConvexHullComputationUsingTheDelaunayTriangulationClassExample.m
%% Convex Hull Computation Using the delaunayTriangulation Class % This example shows the relationship between a Delaunay triangulation of a % set of points in 2-D and the convex hull of that set of points. % Copyright 2015 The MathWorks, Inc. %% % The |delaunayTriangulation| class supports computation of Delaunay % triangulations in 2-D and 3-D space. This class also provides a % |convexHull| method to derive the convex hull from the triangulation. %% % Create a Delaunay triangulation of a set of points in 2-D. X = [-1.5 3.2; 1.8 3.3; -3.7 1.5; -1.5 1.3; 0.8 1.2; ... 3.3 1.5; -4.0 -1.0; -2.3 -0.7; 0 -0.5; 2.0 -1.5; ... 3.7 -0.8; -3.5 -2.9; -0.9 -3.9; 2.0 -3.5; 3.5 -2.25]; dt = delaunayTriangulation(X); %% % Plot the triangulation and highlight the edges that are shared only by a single triangle reveals the % convex hull. triplot(dt) fe = freeBoundary(dt)'; hold on plot(X(fe,1), X(fe,2), '-r', 'LineWidth',2) hold off %% % In 3-D, the facets of the triangulation that are shared only by one tetrahedron represent the boundary of the convex hull. %% % The dedicated |convhull| function is generally more efficient than a % computation based on the |convexHull| method. However, the triangulation % based approach is appropriate if: % % * You have a |delaunayTriangulation| of the point set already and the % convex hull is also required. % * You need to add or remove points from the set incrementally and need to % recompute the convex hull frequently after you have edited the points.