%% Triangles in Specified Boundary
% Compute and plot the triangles of a 2-D constrained Delaunay triangulation within a specified boundary.
% 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;
P = [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(P,C);

%
% Plot the triangulation, highlighting the inner and outer squares in red.

triplot(DT)  
hold on 
plot(DT.Points(innercons',1),DT.Points(innercons',2), ...
     '-r','LineWidth',2)  
plot(DT.Points(outercons',1),DT.Points(outercons',2), ...
     '-r','LineWidth',2)
axis equal  

%
% Plot only the triangles between the inner and outer squares, highlighting the inner and outer squares in red.

figure
TF = isInterior(DT);
triplot(DT.ConnectivityList(TF,:),DT.Points(:,1),DT.Points(:,2))  
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

% Copyright 2015 The MathWorks, Inc.