1

我正在寻找一种将规则的高度网格(例如1024x1024)转换为三角形不规则网络的算法。这是一个显示三角形不规则网络示例的图像:

三角不规则网

我在互联网上寻找一种算法来转换它,但我就是找不到。基本上,三角形密度取决于粗糙度和/或像素误差(光栅化时)或类似的东西。

4

4 回答 4

1

请参阅相关问题的答案:https ://stackoverflow.com/a/20859459/3146587 。

我还在网上找到了这篇关于 TIN 的文章,其中提到了实际算法:http ://www.cs.uu.nl/docs/vakken/gis/TINalg.pdf 。看看 2.4.2 “从网格到 TIN”。

于 2014-01-01T20:32:49.803 回答
0

只是一个想法。使用递归细分创建地图的良好表示。

假设要覆盖的区域是一个三角形。首先检查该三角形是否是内部高度的良好近似值。如果是,则将其留在网格中。如果不是,则选择三角形内的一个点并将其分成三个三角形并继续进行。

检查三角形近似值很容易,计算高度曲线和三角形之间的体积。对于分割点,选择三角形中心更容易,但这种方法会产生非常规则的网格。也许可以使用一些统计方法来更快地覆盖数据中的颠簸。我认为使用平均位置是有道理的。

于 2013-12-17T09:53:07.233 回答
0

我认为网格简化算法可以满足您的需求。我假设大三角形将是一个区域中几乎共面的三角形的组合。

下面的一些讨论: http ://webdocs.cs.ualberta.ca/~anup/Courses/604_3DTV/Presentation_files/Polygon_Simplification/7.pdf

于 2013-12-17T02:16:46.070 回答
0

简化确实是最先出现的想法之一。但这不会像原生解决方案那样干净。

这种不规则性是使用 voronoi 镶嵌获得的,最初的问题归结为寻找点采样分布。

为了找到这些点,它可以以泊松分布的形式实现,密度由沿 x 和 y 的高度图的偏导数之和驱动。可以根据经验微调来调整度量(例如,max而不是总和)。

如果分布遵循泊松分布,则该分布将更好地避免混叠,但可以应用其他模式,例如逐行扫描并根据导数的绝对值决定下一个距离的扫描线算法。然而,线之间的距离将是规则的,这将导致沿 x 的统计一致性,这不如 Karl 发布的原始图片。这就是我在这种情况下提出泊松的原因。

泊松分布可以通过在整个地图上使用正则均匀泊松来简化,然后根据导数绝对值最低的区域进行点剪枝。

剪枝可以分块决定,将整个区域预细分为数百个子块,并且对于每个块,取该块中导数图的大量采样的总和。如果该值较低,则随机修剪大量点。使用这种方法,块将有机会包含多个点,从而使修剪在统计上变得干净。但是,较大的块也会导致在具有高度变化的导数的区域中分辨率较差(原始高度图的二阶导数很强)。因此,应再次进行经验微调以确定块的理想大小。

为了缓解修剪块的问题,可以在启动时生成更多点,然后块可以小得多,这将在两个方面都有好处(良好的抗锯齿和良好的局部性)。但是,这将花费更多的 CPU 时间。

点分布确定后,就是经典的voronoi tesselator,google上有几百个。

于 2013-12-17T02:44:16.950 回答