Test if triangle is in interior of 2-D constrained Delaunay triangulation
tf = isInterior(DT)
an array of logical values that indicate whether the triangles in
a constrained Delaunay triangulation are inside a bounded geometric
domain. A bounded domain is a region enclosed by multiple constrained
edges that do not intersect or overlap. A triangle,
tf = isInterior(
is classified as inside the domain when
Otherwise, the triangle is outside the domain.
Logical values, returned as a column vector. Element
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
A row number of the matrix,
You use this ID to refer a specific triangle.
isInterior can produce incorrect
or inconsistent results when boundary constraints intersect or overlap.
To avoid this behavior, use constraints that form one or multiple
closed boundaries that do not intersect or overlap. When boundary
constraints are nested without intersections or overlaps, the inside
or outside status alternates across the boundaries.