Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

inOutStatus

(不推荐)二维约束 Delaunay 三角剖分中三角形的状态

不推荐使用 inOutStatus(DelaunayTri)。请改用 isInterior(delaunayTriangulation)

不推荐使用 DelaunayTri。请改用 delaunayTriangulation

说明

示例

IN = inOutStatus(DT) 返回几何域的二维约束 Delaunay 三角剖分中的三角形的输入/输出状态。如果 IN(i) = 1,该三角剖分中的第 i 个三角形将划分到域内部,否则将划分到域外部。

注意

inOutStatus 仅与二维约束 Delaunay 三角剖分相关,其中施加的边约束限定封闭的几何域。

示例

全部折叠

创建一个几何域,该几何域包含一个带有方孔的正方形。

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];

为该域创建一个约束 Delaunay 三角剖分。

dt = DelaunayTri(profile,edgeconstraints);

创建两个图:一个图显示关于域的内部和外部三角形,另一个图使用 inOutStatus 仅绘制内部三角形。

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

Figure contains 2 axes objects. Axes object 1 contains 3 objects of type line. Axes object 2 contains 3 objects of type line.

输入参数

全部折叠

Delaunay 三角剖分表示,指定为 DelaunayTri 对象。

提示

  • 当边界约束相交或重叠时,inOutStatus 会产生不正确或不一致的结果。为了避免这种行为,请使用能够构成一个或多个不相交、不重叠的闭合边界的约束。当边界约束嵌套在一起,不相交也不重叠时,内部或外部状态跨边界交替出现。

版本历史记录

在 R2009a 中推出