【问题标题】:Library for Polygon vertex reduction keeping almost the same shape [closed]多边形顶点减少库保持几乎相同的形状[关闭]
【发布时间】:2013-03-26 11:08:57
【问题描述】:

我正在使用多边形裁剪库Clipper 的 c++ 版本,我想减少多边形中的顶点数量,保持几乎相同的形状。

作为附加要求,我必须“仅向外”近似我的多边形:生成的简化多边形必须与原始多边形一致。

我想过:

  • 凸壳,满足“仅向外”的条件,但它过于简化了我的多边形
  • Ramer-Douglas-Peucker algorithm,这很好,因为它让我选择错误但它不满足“仅向外”条件。

然后我看了一下psimpl library,最接近我要求的算法似乎是Opheneim algorithm

同时使用最小和最大距离容差来限制搜索区域

但最小距离不能为0。

有没有办法解决这个问题?你知道任何解决它的 c++ 库吗?

【问题讨论】:

标签: c++ polygon


【解决方案1】:

您可以尝试围绕多边形进行迭代并执行以下操作:

  1. 如果顶点是凹的并且到线的距离,则连接相邻顶点tolerance,然后将其删除。

  2. 1234563多边形 tolerance,并将段的开头距离L1 tolerance。当该迭代停止时(不是在第一次迭代时),删除中间点,插入交点(如果当前在多边形内部,则为上一个,如果在边界上,则为当前)。

不断迭代多边形,同时进行简化。还要确保保留旧点以检查容差(例如,您可以枚举顶点,并在简化时删除索引,但在检查容差时,也要检查中间索引)

它不是超快的算法,但可以做你想做的。

【讨论】:

  • 因为我只会使用一次这种简化,在其他一些计算之前,速度并不重要。我会尝试。谢谢。
猜你喜欢
  • 2018-04-08
  • 1970-01-01
  • 2019-10-31
  • 2022-01-25
  • 2020-12-04
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
相关资源
最近更新 更多