【问题标题】:Algorithm for smoothing the edges of a polygon平滑多边形边缘的算法
【发布时间】:2015-01-28 09:50:54
【问题描述】:

我使用 Node.js 和凹壳算法来隔离英国邮政编码扇区。 这是我现在得到的:

所以现在,我需要平滑边界,使其看起来像这样:

有人知道我应该使用哪种算法吗?

【问题讨论】:

  • Spline 变体浮现在脑海中
  • 问题是你有多个不相交的多边形,但想在它们之间画一条线。我可以尝试表示这些多边形之间的区域,然后以某种方式将它们“挤压*”成线条。或者“增长”多边形直到它们接触。
  • 我将如何种植它们直到它们接触?我应该使用什么?
  • @elektro_pionirka 你可以搜索 polygon offsetting 来增加它们和 polygon intersection detection 来检测它们是否接触

标签: javascript algorithm computational-geometry


【解决方案1】:

似乎有很多方法可以做到这一点。我倾向于引用某种贝塞尔插值 (http://www.antigrain.com/research/bezier_interpolation/)。

@amit 提供了另一个关于如何解决问题的重要线索,样条线实际上对于平滑多边形非常有用。查看相关问题:https://gis.stackexchange.com/questions/24827/how-to-smooth-the-polygons-in-a-contour-map

希望对你有帮助!

【讨论】:

    【解决方案2】:

    至少有两种方法:

    • 曲线拟合算法(最适合您的用例)
    • Rammer-Douglas-Peucker 算法(实现更简单)

    Rammer-Douglas-Peucker 算法减少了多边形的节点数 - 这不会使其平滑,因为它会使它弯曲,它只会减少节点(粗糙度),同时努力保持多边形尽量保持原形

    虽然你是什么,很可能,但是通过一系列点的曲线拟合算法。

    请参阅this answer 我已经提出(以及上面的答案,更具描述性)以获取解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 2018-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 2011-04-11
      相关资源
      最近更新 更多