www.gusucode.com > matlab 案例源码 matlab代码程序 > matlab/FindandPlotTriangleswithinaBoundaryExample.m
%% Find and Plot Triangles within a Boundary % Copyright 2015 The MathWorks, Inc. %% % Create a geometric domain whose shape is a square frame. outerprofile = [-5 -5; -3 -5; -1 -5; 1 -5; 3 -5; 5 -5; 5 -3; 5 -1; 5 1; 5 3; 5 5; 3 5; 1 5; -1 5; -3 5; -5 5; -5 3; -5 1; -5 -1; -5 -3]; innerprofile = outerprofile.*0.5; profile = [outerprofile; innerprofile]; %% % Define the edge constraints. outercons = [(1:19)' (2:20)'; 20 1;]; innercons = [(21:39)' (22:40)'; 40 21]; C = [outercons; innercons]; %% % Create the constrained Delaunay triangulation. DT = delaunayTriangulation(profile,C); %% % Plot the triangulation. figure subplot(1,2,1) triplot(DT) % Highlight the inner square in red. hold on plot(DT.Points(innercons',1),DT.Points(innercons',2),... '-r','LineWidth',2) % Highlight the outer square in red and resize the |x| and |y| axes to make % the plot square. plot(DT.Points(outercons',1),DT.Points(outercons',2), ... '-r','LineWidth', 2) axis equal % Plot only the triangles that lie inside of the domain. hold off subplot(1,2,2) inside = isInterior(DT); triplot(DT.ConnectivityList(inside, :),DT.Points(:,1),DT.Points(:,2)) % Highlight the inner and outer squares in red. hold on plot(DT.Points(outercons',1),DT.Points(outercons',2), ... '-r','LineWidth', 2) plot(DT.Points(innercons',1),DT.Points(innercons',2), ... '-r','LineWidth', 2) axis equal hold off