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