Main Content

pointLocation

包围点的三角形或四面体

说明

示例

ID = pointLocation(TR,P) 返回包围 P 中查询点的三角形或四面体的 ID。矩阵 P 中的每行都包含一个查询点的坐标。

ID = pointLocation(TR,x,y) 将二维查询点的 x 坐标和 y 坐标指定为单独的列向量。

ID = pointLocation(TR,x,y,z) 将三维查询点的 x 坐标、y 坐标和 z 坐标指定为单独的列向量。

示例

对于上述任意语法,[ID,B] = pointLocation(___) 还会返回每个查询点相对于包围它的三角形或四面体的重心坐标。

示例

全部折叠

查找三角剖分中包围一组查询点的三角形。

定义三角剖分的点和连接。

TP = [2.5 8.0; 6.5 8.0; 2.5 5.0; 6.5 5.0; 1.0 6.5; 8.0 6.5];
C = [5 3 1; 3 2 1; 3 4 2; 4 6 2];
TR = triangulation(C,TP);

定义两个查询点。

P = [2.25 7; 6 6.5];

绘图三角剖分和查询点。

triplot(TR)
hold on
plot(P(:,1),P(:,2),'k*')
ylim([4 9])
xlim([0 9])

确定包围每个查询点的三角形的 ID。

ID = pointLocation(TR,P)
ID = 2×1

     1
     3

用红色突出显示包围查询点的三角形。

triplot(TR.ConnectivityList(ID,:),TP(:,1),TP(:,2),'r')

查找三维三角剖分中包围一组查询点的四面体。

基于一组三维点创建德劳内三角剖分。

rng('default')
x = rand([20 1]);
y = rand([20 1]);
z = rand([20 1]);
TR = delaunayTriangulation(x,y,z);

查找包围查询点的四面体的 ID 并计算查询点的重心坐标。

P = [0.7 0.6 0.3; 0.5 0.5 0.5];
[ID,B] = pointLocation(TR,P)
ID = 2×1

     9
     8

B = 2×4

    0.2046    0.0893    0.5721    0.1340
    0.1900    0.1495    0.6422    0.0183

输入参数

全部折叠

三角剖分表示法,指定为标量 triangulationdelaunayTriangulation 对象。

数据类型: triangulation | delaunayTriangulation

查询点,指定为 2 列矩阵(二维)或 3 列矩阵(三维)。P 包含查询点的 x 坐标和 y 坐标,还可能包含 z 坐标。

数据类型: double

查询点的 x 坐标,指定为列向量。

数据类型: double

查询点的 y 坐标,指定为列向量。

数据类型: double

查询点的 z 坐标,指定为列向量。

数据类型: double

输出参量

全部折叠

包围查询点的三角形或四面体的三角形或四面体 ID,以列向量形式返回。三角形或四面体 ID 是 ConnectivityList 属性中对应三角形或四面体的行号。

如果查询点位于两个或多个三角形或四面体的边界上,将返回最大 ID。

ID 包含不位于三角剖分的三角形或四面体中的点的 NaN 值。

数据类型: double

每个查询点相对于包围它的三角形或四面体的重心坐标,以 3 列矩阵(二维)或 4 列矩阵(三维)形式返回。

数据类型: double

扩展功能

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2013a 中推出