Math 如何检测开放网格三维模型的边界顶点?

Math 如何检测开放网格三维模型的边界顶点?,math,graphics,geometry,computational-geometry,vertex,Math,Graphics,Geometry,Computational Geometry,Vertex,有两种表面网格模型,闭合网格(如球体或立方体)和第二种是开放网格模型,这意味着模型的表面不在闭合环中。它像一根中空的管子一样从某处打开。 Sp我想要的是检测开放网格模型的边界顶点。在闭合循环网格中没有边界,但在开放网格中,我们必须检测边界顶点以进行一些平滑、细分等操作。 请建议我如何选择/检测边界顶点?这样做的最佳方式是什么? 通过比较三角形的边?给我一些想法 谢谢。假设您的网格是2D(或2.5D)规则的、构造良好的三角剖分。您可以使用此处列出的某些属性: 第9页将顶点的度(或价)定义为关联边的

有两种表面网格模型,闭合网格(如球体或立方体)和第二种是开放网格模型,这意味着模型的表面不在闭合环中。它像一根中空的管子一样从某处打开。 Sp我想要的是检测开放网格模型的边界顶点。在闭合循环网格中没有边界,但在开放网格中,我们必须检测边界顶点以进行一些平滑、细分等操作。 请建议我如何选择/检测边界顶点?这样做的最佳方式是什么? 通过比较三角形的边?给我一些想法


谢谢。

假设您的网格是2D(或2.5D)规则的、构造良好的三角剖分。您可以使用此处列出的某些属性:

第9页将顶点的度(或价)定义为关联边的数量。如图所示,所有边界顶点都有4条入射边。“内部”顶点有5条关联边

第17页将边界边定义为恰好与一个面相邻的边界边


您可能会发现第22页的讨论很有帮助(闭合2流形三角形网格)

假设您有流形网格,那么网格的边界是那些只属于一个多边形的边。不在边界上的边将属于两个多边形。边界顶点是属于边界边的顶点

找到边界顶点的一种简单方法是迭代所有边,计算它们属于多少个多边形,如果它们只属于一个多边形,则收集边的顶点作为边界顶点。不过,您必须从集合中删除重复的顶点


第二种方法是让网格数据结构在将每条边添加到网格或将多边形附着到特定边时检查每条边。通过这种方式,网格数据结构可以为您保留一个最新边界边的列表,这样,当您需要这些边时,就不必每次都找到它们。这将大大减少确定边界边的开销,尽管插入边和多边形的成本稍高一些。您的mesh数据结构也将占用更多内存。

谢谢。我明白你的意思。我想可能还有其他方法来计算边缘。我明白了!我添加了第二种方法,它讨论缓存边界边。也许会有帮助?是的,那真的很好。。我没有考虑过。我正在添加三角形并更新整个网格,那么为什么不更新边信息呢。。我试着计算它,这真是一个内存昂贵的方法。但我肯定会尝试。是的,它可能会占用大量内存,特别是对于边界空间很大的大型网格。但它也可以大大加快速度!祝你好运:)嗨,如果网格有所有的边,但缺少一对内部面呢。因此,如果我们只找到1级边,那么它可以收集那些丢失的面和顶点。也许还有一种方法可以考虑顶点的位置?这个演示对我很有帮助。谢谢我已经实现了这个算法,效果很好。谢谢。为什么不呢?但我不知道在哪里可以接受。。这很有趣,但实际上我试图找到那个按钮…看起来你接受了另一个答案。祝您的项目好运:)