【问题标题】:Is there any "Geometry Contour Line Algorithm"?有没有“几何轮廓线算法”?
【发布时间】:2018-02-12 07:11:54
【问题描述】:

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

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

我怎样才能找到这个轮廓线和点?

【问题讨论】:

  • 您需要轮廓的矢量表示吗?还是您只关心获得最终图像?
  • @samgak 只关心获取最终图像。

标签: algorithm geometry contour


【解决方案1】:

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

简化也称为marching squares

【讨论】:

  • 该方法必须适应,因为拓扑不是方形网格的。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

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

    在三角形内部进行插值并获得水平截面是一件简单的事情。不幸的是,这将产生一个粗略的近似值,并且您可能会注意到由于多段线的粗糙而产生的伪影。

    一种可能的解决方法是将多段线平滑作为后处理步骤,例如将它们转换为 polyBezier。

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

    【讨论】:

      猜你喜欢
      • 2019-01-15
      • 2015-06-02
      • 2014-02-10
      • 1970-01-01
      • 2013-01-01
      • 2013-08-02
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      相关资源
      最近更新 更多