【问题标题】:Converting a polyline to a polygonal shape with width将折线转换为具有宽度的多边形
【发布时间】:2013-11-15 21:12:41
【问题描述】:

当我尝试解析 Gerber RS274X 文件并将其转换为 GDSII 文件时,遇到了一个问题。

如果您沿着特定路径(折线)画一个实心圆, 你得到的是一个实心形状,可以随后转换 到一个封闭的多边形。我的问题是是否有图书馆或 可靠的算法来自动化这个过程,其中输入将是 表示折线的点串,输出将是 生成的多边形。

下面是我上传的图片来解释我的问题。

【问题讨论】:

  • 嗨!如果您对此有解决方案,请告诉我们。谢谢!

标签: c# c++ algorithm image-processing


【解决方案1】:

您正在谈论的算法称为“Minkowski sum”(在您的情况下,折线和多边形,近似一个圆)。在您的情况下,第二个和(圆)是凸的,这意味着可以使用所谓的多边形卷积相当有效地计算 Minkowski 和。

您没有指定您使用的语言。在 C++ 中,Minkowski sum 可作为Boost.Polygon 的一部分或CGAL 的一部分使用。

要使用它们,您可能需要通过两次遍历将折线转换为(退化的)多边形:向前,然后向后。

@melak47 提出的凸包联合将产生正确的结果,但效率要低得多。

【讨论】:

  • 好主意,先生。尽管为折线的每条边生成一个凸包(一条边为一个多边形)然后将它们一个接一个地合并对我来说要容易得多,但我会尝试两者,我同时使用 c++ 和 c#
【解决方案2】:

可以通过在每个输入点周围放置所需数量的均匀分布的点来计算您寻找的形状,然后在一条线段上找到每对圆的凸包。 这些多边形的联合将组成你想要的多边形。

a number of algorithms可以找到一组点的凸包,还有libraries which provide implementations

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-08
    • 2016-08-09
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多