%% Plot Constrained Delaunay Triangulation
% Create a geometric domain that consists of a square with a square hole.

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];
outercons = [(1:19)' (2:20)'; 20 1;];
innercons = [(21:39)' (22:40)'; 40 21];
edgeconstraints = [outercons; innercons];

% Create a constrained Delaunay triangulation of the domain.

dt = DelaunayTri(profile,edgeconstraints);

% Create two plots: one showing the interior and exterior triangles with respect to the domain, and one that uses inOutStatus to plot the interior triangles only.

subplot(1,2,1)
triplot(dt)
hold on
plot(dt.X(outercons',1),dt.X(outercons',2),...
     '-r','LineWidth',2) 
plot(dt.X(innercons',1),dt.X(innercons',2),...
     '-r','LineWidth',2)
axis equal
hold off
subplot(1,2,2)
inside = inOutStatus(dt);
triplot(dt(inside,:),dt.X(:,1),dt.X(:,2))
hold on
plot(dt.X(outercons',1),dt.X(outercons',2),...
     '-r','LineWidth',2)
plot(dt.X(innercons',1),dt.X(innercons',2),...
     '-r','LineWidth',2);
axis equal
hold off

% Copyright 2020 The MathWorks, Inc.