30.1.2三角函数中的点识别

通常需要确定N维空间中的特定点是否在该N维空间的一组点的Delaunay镶嵌内,如果是,则哪个N单纯形包含该点,以及镶嵌中的哪个点最接近所需点。函数tsearch数据搜索在三角函数中执行此函数,以及采尔肯dsearchn在N维镶嵌中。

识别是否从向量表示的特定点</p>落在N-单纯形的一个单纯形内,我们可以把点的笛卡尔坐标写成关于N-单纯形的参数形式。这种参数形式称为点的重心坐标。如果定义N-单纯形的点从给定N+1个向量t(,:),则定义该点的重心坐标</p>从给定

</p>= 贝塔 * t

这里的贝塔包含N+1个值,这些值一起作为向量表示点的重心坐标</p>。确保的值具有唯一的解决方案贝塔的附加标准

总和贝塔1.

是强加的,因此我们可以将上述内容写成

</p>- t终止贝塔(1:结束1)*(t(1:end1,:)-个(N1.t终止

正在解决贝塔然后我们可以写

贝塔(1:结束1)=(</p>- t终止t(1:end1,:)-个(N1.t终止贝塔(结束)=总和(贝塔(1:结束1))

它给出了点的笛卡尔坐标的转换公式</p>到重心坐标贝塔.重心坐标的一个重要性质是,对于N单纯形中的所有点

0 <= 贝塔(1.

因此,中的测试tsearch采尔肯本质上需要用N-单纯形的每个单纯形的重心坐标来表示每个点,并测试的值贝塔。这正是中使用的实现采尔肯. tsearch针对二维进行了优化,并且没有明确形成重心坐标。

 
: idx = tsearch (x, y, t, xi, yi)

搜索封闭的Delaunay凸包。

对于t=delaunay(x, y),在中查找索引t包含点(xi, )对于凸壳外部的点,idx是NaN。

详见: delaunay, delaunayn.

 
: idx = tsearchn (x, t, xi)
: [idx, p] = tsearchn (x, t, xi)

找到包围给定点的单纯形。

采尔肯通常与一起使用delaunayn:t=delaunayn(x)返回一组simplext然后采尔肯返回的行索引t包含的每个点xi对于凸包外部的点,idx是NaN。

如果被指定,采尔肯还返回重心坐标</p>封闭单纯形的。

详见: delaunay, delaunayn, tsearch.

的使用示例tsearch可以用简单的三角函数法看到

x= [-1; -1; 1; 1];y= [-1; 1; -1; 1];tri= [1, 2, 3; 2, 3, 4];

从两个三角形组成,定义为tri.然后我们可以确定一个点落在哪个三角形里

tsearch(x, y, tri, -0.5, -0.5)⇒ 1搜索(x, y, tri, 0.5, 0.5)⇒ 2.

我们可以确认一个点不在其中一个三角形内,就像

tsearch(x, y, tri, 2, 2)⇒ NaN

这个数据搜索dsearchn在测试中找到离所需点最近的点。所需的点不一定必须在镶嵌中,即使它是镶嵌的返回点,也不一定是在其中找到所需点的N单纯形的顶点之一。

 
: idx = dsearch (x, y, tri, xi, yi)
: idx = dsearch (x, y, tri, xi, yi, s)

返回索引idx的最近点x, y到元素[xi(:), (:)].

变量s出于兼容性考虑被接受,但被忽略。

详见: dsearchn, tsearch.

 
: idx = dsearchn (x, tri, xi)
: idx = dsearchn (x, tri, xi, outval)
: idx = dsearchn (x, xi)
: [idx, d] = dsearchn (…)

返回索引idx的最近点x到元素xi.

如果outval则的值xi不包含在一个单纯形中tri设置为outval通常地tri从返回delaunayn(x).

可选输出d包含查询点之间距离的列向量xi和最近的单纯形点x.

详见: 数据搜索, tsearch.

的使用示例数据搜索,使用上述值x, ytri

数据搜索(x, y, tri, -2, -2)⇒ 1.

如果希望符号镶嵌之外的点,则dsearchn可以用作

dsearchn([x, y], tri,[-2,-2],NaN)⇒ NaNdsearchn([x, y], tri,[-0.5,-0.5],NaN)⇒ 1.

其中镶嵌之外的点然后符号为NaN.


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号