一种称为“gcode”的语法用于告诉 CNC 雕刻机如何移动。gcode的一个例子如下:
G00 Z1 F800 (lift z axis by 1mm)
G00 X49.546785 Y-11.48703 F800 (Go to these coordinates at 800mm/m)
G01 Z-0.35 F100 (Penetrate. Lower the tool into the work by 0.35mm)
G03 X49.126859 Y-11.464812 I-0.385599 J-3.308393 F80 (cut an anticlockwise arc at 80mm/m)
(arc ends at X,Y, arc centre is x+i, y+j)
etc.
如您所见,我们可以从 x、y 和 z 平面中的坐标以直线 (G0,G1) 和圆弧 (G2,G3) 描述工具的移动。使用这种机制,我们可以绘制(雕刻)路径,通常它们是闭合路径,如下所示:
在这张图片中,我们看到一条黑色的封闭路径(字母 a)。绿色轮廓是相同的路径但“向上缩放”,红色路径是相同的路径但向下缩放。在 Inkscape 中,我们可以使用“动态偏移”工具来做到这一点。
我正在寻找一种算法,我可以将其应用于 gcode(如上所述)以按所述缩放路径。我的第一个想法是从字面上只缩放每一行和 arc :
假设我们按 'n'% 缩放 本质上,我们会让每条线长 n%,每条弧长 n%。但是最终的路径会以什么为中心呢?
有谁知道这个算法的名称,或者有任何链接或示例说明如何在 SVG 或任何其他基于坐标的系统中实现这一点(如果可能的话,最好在 python 中)。
附录:
向内和向外缩放多边形的过程主要有两个不同的名称:“膨胀”和“偏移”。