如何对不规则形状的晶格进行三角测量?

5
我有一个XYZ点的列表,它们在XY平面上均匀排列成晶格状(例如):

Points arrayed in a lattice

我希望“平铺”这些点之间的空间,使用三角形连接一个点和它最多八个相邻点中的两个,如下所示:

The same point lattice as before, but now tiled with triangles

如何在Python中高效地解决这个问题? 一种天真的方法是检查每个点的八个可能三角形,但由于考虑了许多重复的三角形,这样做非常低效。像考虑每个点右下角的可能三角形这样的做法,会错过一些三角形。是否有一些通用算法来解决这个问题?

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




背景

这种三角测量是从LIDAR高度数据生成建筑物3D网格的过程中的一步。当我使用“常规”算法从点云生成网格(如泊松、枢轴球)时,我最终得到的网格中有许多孔洞问题(特别是在陡峭的倾斜处,如塔或墙)。我希望通过认识到点云在XY平面上形成了均匀间隔的晶格,并从那个角度进行三角测量来解决许多这些孔洞问题。

point cloud height-data of a local churc Part of a pointcloud of a local church as seen from above

1个回答

2

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

a b

d c

要得到像您所描述的三角测量,需要测试是否只有三个点。如果是,则放置由这三个点组成的三角形。否则,放置三角形abcacd


这很有道理,我感觉自己太蠢了,没看出来。谢谢! - Harm van den Brand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接