【问题标题】:douglas-peucker algorithm: understanding use with polgyonsdouglas-peucker 算法:理解使用 polgyons
【发布时间】:2012-07-23 19:17:11
【问题描述】:

我一直在研究这个算法,它看起来非常简单。但是,我对如何在封闭的多边形中使用它感到困惑。我见过的所有示例都处理带有开口端的线/曲线。如果我正在可视化该过程正确地绘制一条线,然后对其进行迭代以重新捕获多边形的细节将不起作用,因为它总是至少在多边形的一侧保持打开状态。

我正在考虑编写一个实现,首先创建 4 个点(最远的 topLeft、TopRight、Bottomright 和 BottomLeft 点),然后在这些点索引之间的顶点上运行算法。

因此,如果底线在原始路径数组中的索引为 40 和 80,那么我将在那里迭代并在点 40-80 上捕获该线的相似性,然后它们移动到下一条边,直到所有边都完成.

大家都知道我自己是个傻瓜,而且事情过于复杂,所以我想知道这是否是一个合理的实现?

我基本上是在尝试复制下面看到的 GPX 数据缩减实施:

【问题讨论】:

  • 你到底想用这个做什么??
  • 我有需要减少的 GPX 数据。我添加了另一张图片来澄清。
  • 据我所知,您正在尝试获取x 点,并取它们的平均值以形成一种趋势线,以便处理的点少得多。对吗?
  • 我只是试图获取非常嘈杂且高度复杂的 GPS 数据,并删除对大形状没有贡献的点。只是多边形上的简单点减少
  • 给定一个多边形,你必须比起点走得更远。否则,您将拥有这个开放空间。只需从头到尾附加一些点,它应该可以工作。请告诉这是否有效。

标签: c# algorithm math


【解决方案1】:

快速阅读Wikipedia上的算法后,似乎可以通过简单的方式捕获封闭循环的简化形状。

在起点'A'和终点'Z'相同的情况下调用方法。

修改算法,如果 'A' 和 'Z' 是同一个点,而不是找到最远的点 垂直 到线 AZ ,它只是寻找最远的点根据从起点/终点到欧几里得距离

现在算法在 A->M 和 M->Z 上递归,其中 M 是离 A 最远的点(也是 Z)。现在算法可以正常运行了。

【讨论】:

    猜你喜欢
    • 2018-11-18
    • 2016-05-19
    • 1970-01-01
    • 2015-10-09
    • 2021-05-16
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    相关资源
    最近更新 更多