-1

我在 Matlab 中创建了 3D 凸包图。似乎在这个函数中,一些激光点用于凸包的刻面,但其他一些点位于凸包内部。我的问题是如何在 Matlab 中分别识别这些点。哪种方法适用于计算位于凸包内部的这些点到最近的凸包小平面的垂直距离(从每个点到凸包最近小平面的距离)?如果您能向我介绍一些关于凸包函数的参考资料,我将不胜感激。

4

2 回答 2

0

在 Matlab 文件交换中,有一个很棒的函数叫做inhull,它会测试你的点是否在船体内部。我不确定它是否提供了从点到最近面的距离,但也许代码中使用的方法很容易更改以提供此输出。

于 2014-10-03T16:07:55.127 回答
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
于 2014-10-03T17:45:10.470 回答