【发布时间】:2018-02-12 07:11:54
【问题描述】:
【问题讨论】:
-
您需要轮廓的矢量表示吗?还是您只关心获得最终图像?
-
@samgak 只关心获取最终图像。
标签: algorithm geometry contour
【问题讨论】:
标签: algorithm geometry contour
等高线图的数据可以通过二维简化的行进立方体算法生成,描述为here。在简化中,使用正方形而不是立方体,并且使用四个采样值而不是立方体的八个角进行插值。
简化也称为marching squares。
【讨论】:
因为它看起来像一个不规则的网格,所以您应该首先在它周围构建一个网格(例如,来自 Voronoi tesellation)。
对于每个三角形,取其顶点的最大和最小高度,并找出该范围内等高线的高度(例如,如果您每 10 个单位绘制等高线,并且三角形的高度从 11.5到 34.2,穿过该三角形的等高线位于高度 20 和 30)。
然后将三角形内部的高度函数近似为线性函数,找出这些轮廓线的位置并绘制它们。
【讨论】:
作为第一个近似值,您可以承认您的函数在数据点的三角剖分上是分段平面的。
可以使用 Delaunay 三角测量技术,但在这种情况下,鉴于规则的极坐标排列,我想基于极坐标参数的简单规则可以做到。
在三角形内部进行插值并获得水平截面是一件简单的事情。不幸的是,这将产生一个粗略的近似值,并且您可能会注意到由于多段线的粗糙而产生的伪影。
一种可能的解决方法是将多段线平滑作为后处理步骤,例如将它们转换为 polyBezier。
我更喜欢的另一种方法是使用高阶插值方法。对于 C1 连续性,您可以计算给定点的梯度估计值,并在三角形上拟合二次函数。然后将三角形细分为子三角形,在子顶点处插值函数,在这些子三角形中切换到平面模型。
【讨论】: