当我尝试解析并将Gerber RS274X文件转换为GDSII文件时,我遇到了一个问题。
如果沿某条路径(折线)描边实心圆, 你得到的是一个坚固的形状,可以随后转换 到一个封闭的多边形。我的问题是有没有图书馆或 可靠的算法来自动化这个过程,输入将是一个 表示折线的点串,输出将是 结果多边形。
下面是我上传的图片来解释我的问题。
答案 0 :(得分:1)
您可以通过在每个输入点周围的圆圈中放置所需数量的均匀间隔点,然后在线段上找到每对圆形凸包来计算您寻找的形状。 这些多边形的并集将构成您想要的多边形。
有a number of algorithms可以找到一组点的凸包,还有libraries which provide implementations。
答案 1 :(得分:0)
您正在谈论的算法称为“Minkowski sum”(在您的情况下,折线和多边形,近似圆)。在你的情况下,第二个加数(圆圈)是凸的,这意味着可以使用所谓的多边形卷积相当有效地计算Minkowski和。
您没有指定您使用的语言。在C ++中,Minkowski sum是Boost.Polygon的一部分或CGAL的一部分。
要使用它们,您可能需要将折线转换为(退化的)多边形,方法是将其转换为两次:向前,然后向后。
@ melak47提出的凸壳联合将产生正确的结果,但效率却低得多。