【问题标题】:How do I triangulate an irregularly shaped lattice?如何对不规则形状的格子进行三角剖分?
【发布时间】:2021-06-02 15:40:39
【问题描述】:

我有一个 XYZ 点列表,这些点在 XY 平面中以均匀间隔的格子排列,如下所示(例如):

我想用三角形将这些点之间的空间“平铺”,这些三角形将一个点连接到其直接(最多)八个邻居中的两个,如下所示:

如何在 Python 中高效地执行此操作? 一种简单的方法会检查每个点是否有八个可能的三角形,但由于考虑到许多重复的三角形,这非常低效。考虑每个点的右下角可能出现的三角形之类的操作会遗漏一些三角形。有没有针对这个问题的通用算法?

我认为 Delaunay 三角剖分不合适,因为它总是会创建凸三角剖分。




上下文

此三角剖分是根据激光雷达高度数据生成建筑物 3D 网格的过程中的一个步骤。当我使用“常规”算法从点云(泊松、旋转球)生成网格时,我最终得到的网格中有许多孔(尤其是在陡峭的斜坡上,如塔或墙)。我希望我可以通过识别点云在 XY 平面中形成均匀间隔的晶格并如上所述从该角度对其进行三角剖分来解决很多这些孔问题。

【问题讨论】:

    标签: python algorithm mesh triangulation


    【解决方案1】:

    考虑每个 2x2 子网格,其中至少存在三个点 abcd

    a b
    
    d c
    

    要获得像您描述的那样的三角剖分,请测试是否只有三个点。如果是这样,请放置一个由这三个点组成的三角形。否则,放置三角形abcacd

    【讨论】:

    • 说的太有道理了,我没看到就觉得很傻。谢谢!
    猜你喜欢
    • 2020-08-12
    • 2020-04-21
    • 2011-07-15
    • 2018-04-13
    • 2014-06-29
    • 2016-09-28
    • 2015-07-23
    • 2012-09-06
    • 2016-09-27
    相关资源
    最近更新 更多