【问题标题】:Getting the boundary of a hole in a 3d plane获取 3d 平面中孔的边界
【发布时间】:2018-02-03 01:55:30
【问题描述】:

我有一组位于平面上的 3d 点。在平面的某处,会出现一个洞(以缺点表示),如下图:

我试图找到这个洞的轮廓。其他解决方案包括寻找凸/凹外壳,但这些适用于外部边界,而不是内部边界。

有这样的算法吗?

【问题讨论】:

    标签: algorithm 3d geometry


    【解决方案1】:

    如果您知道平面(可以通过 PCA 确定),则可以将所有点投影到该平面中并继续使用 2D 坐标。因此,您的问题简化为在 2D 数据集中寻找边界点。

    您的数据看起来好像是均匀采样的(每个轴独立)。然后,一个非常简单的检查可能就足够了:计算一个点的 - 比如说 30 个 - 最近邻居的质心。如果质心离原点很远,你很可能在边界上。

    第二种方法可能是记录您有邻居的方向。 IE。为离散化方向保留一个位字段(例如,以 10° 为步长的角度,这将为您提供 36 个条目)。然后,对于每个邻居,计算其方向并将该方向(包括一些相邻方向)标记为已占用。例如。如果您的邻居在 27.4° 方向,您可以将方向位 1、2 和 3 标记为已占用。这个额外的周围空间将影响结果的细粒度。您可能还想让它取决于邻居的距离(即将邻居视为圆圈并找到圆圈所跨越的角度范围)。最后,检查是否所有方向都被占用。如果没有,你就在边界上。

    Alpha 形状可以为您提供内部和外部边界。

    【讨论】:

      【解决方案2】:
      1. 通过将点投影到您的平面上转换为 2D

        查看相关的QA处理此问题:

      2. 在二维点集中寻找洞

        只需应用这个相关的QA

      3. 项目发现漏洞回到 3D

        再次查看#1中的链接

      抱歉,几乎只有链接的答案,但展位链接在 SO/SE 上,并且在结合时可以完全解决您的问题。我首先努力将您的问题标记为重复并将其留在评论中,但这更具可读性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-10
        • 1970-01-01
        • 2011-03-06
        • 1970-01-01
        • 2015-03-14
        • 1970-01-01
        • 1970-01-01
        • 2011-09-27
        相关资源
        最近更新 更多