有没有“几何轮廓线算法”?

时间:2017-09-04 04:49:09

标签: algorithm geometry contour

我想找到&画这样的轮廓线。

enter image description here

数据只是(x,y,z)的列表,只有几个点(约40~60)。 (x和y是位置,z是高度)

我如何才能找到这条轮廓线和点?

3 个答案:

答案 0 :(得分:4)

作为第一个近似值,您可以承认您的函数在数据点的三角测量中是分段平面的。

可以使用Delaunay三角剖分技术,但在这种情况下,考虑到规则的极坐标排列,我想基于极坐标参数的简单规则可以做到。

插入三角形内部并获得水平部分是一件简单的事情。不幸的是,这会产生一个粗略的近似值,你可能会注意到由于折线的粗糙而产生的伪影。

可能的解决方法是将折线平滑为后处理步骤,例如将它们转换为polyBeziers。

我更喜欢的另一种方法是使用更高阶的插值方法。对于C1连续性,您可以计算给定点处的梯度估计值,并在三角形上拟合二次函数。然后细分子三角形中的三角形,在子顶点处插入函数,并切换到这些子三角形中的平面模型。

答案 1 :(得分:1)

因为它看起来像一个不规则的网格,你应该首先在它周围建立一个网格(例如,来自Voronoi tesellation)。

对于每个三角形,取其顶点的最大和最小高度,并找出该范围内轮廓线的高度(例如,如果您每10个单位绘制轮廓线,并且三角形的高度从11.5开始到34.2,穿过该三​​角形的轮廓线位于高度20和30处。

然后将三角形内部的高度函数近似为线性函数,找出这些轮廓线的位置并绘制它们。

答案 2 :(得分:0)

轮廓图的数据可以通过行进立方体算法的二维简化生成,其描述为here。在简化中,使用正方形代替立方体,并且使用四个采样值进行插值而不是立方体的八个角。

简化也称为marching squares