我在Matlab中创建了3D凸包图。似乎在这个函数中,一些激光点用于凸壳的刻面,但是其他一些点位于凸壳内。我的问题是如何在Matlab中单独识别这些点。哪种方法适用于计算位于凸包内部的这些点与最近的凸包面(从每个点到凸包的最近面的距离)的垂直距离? 如果你能介绍一些关于凸壳功能的参考文献,我将非常感激。
答案 0 :(得分:0)
在Matlab文件交换中,有一个很棒的函数inhull,它将测试你的点是否在船体内部。我不确定它是否提供了从点到最近面的距离,但是代码中使用的方法可能很容易改变以提供此输出。
答案 1 :(得分:0)
查看功能tsearchn
。
以下代码在3D中创建一个球体并计算delaunay三角化。然后我们用点设置testpoints
变量来测试它们是否在球体内部。对于最接近点的四面体面,t
将索引返回到TRI
,如果该点在球体外,则返回NaN。
[X,Y,Z] = sphere(N);
TRI = delaunay(X(:),Y(:),Z(:));
testpoints = [0 0 0; 0 .5 0; 1 2 0]
t = tsearchn([X(:) Y(:) Z(:)],TRI,testpoints)
figure;
trisurf(TRI,X(:),Y(:),Z(:));
输出是,
t =
8182
7779
NaN