【问题标题】:how can I identify points are inside convex hull in Matlab separately如何在Matlab中分别识别凸包内的点
【发布时间】:2014-10-03 15:09:42
【问题描述】:

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

【问题讨论】:

    标签: matlab function convex


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      查看函数,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
      

      【讨论】:

        猜你喜欢
        • 2018-11-23
        • 2014-09-12
        • 1970-01-01
        • 1970-01-01
        • 2021-08-12
        • 1970-01-01
        • 1970-01-01
        • 2015-06-15
        • 2016-01-19
        相关资源
        最近更新 更多