Класс: DelaunayTri
(Не рекомендуемый) Состояние треугольников в 2D ограниченной Триангуляции Делоне
inOutStatus(DelaunayTri) не рекомендуется. Используйте isInterior(delaunayTriangulation) вместо этого.
DelaunayTri не рекомендуется. Использование delaunayTriangulation вместо этого.
IN = inOutStatus(DT)
IN = inOutStatus(DT) возвращается в / состоянии треугольников в 2D ограниченной Триангуляции Делоне геометрической области. Учитывая Триангуляцию Делоне, которая имеет набор ограниченных ребер, которые задают ограниченную геометрическую область. i 'th треугольник в триангуляции классифицируется как в области если IN(i) = 1 и снаружи в противном случае.
inOutStatus только важен для 2D ограниченных Триангуляций Делоне, где наложенные ограничения ребра связали закрытую геометрическую область.
DT | Триангуляция Делоне. |
IN | Логический массив длины равняется количеству треугольников в триангуляции. Ограниченные ребра в триангуляции задают контуры допустимой геометрической области. |
Создайте геометрическую область, которая состоит из квадрата с квадратным отверстием:
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];
dt = DelaunayTri(profile, edgeconstraints)
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;
% Plot showing interior and exterior
% triangles with respect to the domain.
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;
% Plot showing interior triangles only
hold off;