Mr.*_*Qbs 3 algorithm approximation computational-geometry g-code
我的问题的简短描述
我需要为 3D 打印实现从 G1 指令到 G2 和 G3(http://www.cnccookbook.com/CCCNCGCodeArcsG02G03.htm)的GCODE 自动重构。
G1 是直线运动并打印(路径用矢量描述)。
我正在寻找基于给定向量路径的算法来近似圆/弧(特别是它的中点)。请注意,G2 和 G3 无法打印不属于圆的曲线 - 因此并非每个向量路径都可以通过这种方式近似。
我的问题的详细描述
我正在寻找通过圆(弧)来近似部分(或全部)向量路径(可以是正多边形、它的一部分或不规则多边形部分)的方法。但是,让我们首先关注规则多边形。
在图片中,我绘制了这个问题的不同情况。
注意:每个多边形都是由向量构建的(如第 5 点)。

这不是故事的开始……有几个标准:
我发现的解决方案(好的和坏的):
1) 和 5) - 我的简单解决方案
这是最简单的情况。我可以计算共享一个观点的每一侧之间的半径。如果它们具有相同的长度和每个之间的角度相等,我可以计算圆的中点(作为属于垂直中线的点,每边一条中线),我有我需要的一切:起点,终点,中点观点。
但此解决方案仅适用于情况 1 和 5。
当我遇到案例 2,3,4 或不规则多边形的部分时,我真的不知道该怎么办
您可以获得任意 2 条线段的曲率半径中心

在3D 中使用对象的平面(3 条线而不是 2 条线)。半径只是中心和线连接点(蓝线)之间的距离。如果半径太大,则将两条线作为单线处理(没有交叉点或交叉点太远)
像 #1 一样计算所有段
如果连接,则将具有相同半径和中心的圆弧连接到单个圆弧
处理变化的曲率
如果圆弧正在改变中心或半径,请按照这张图片进行操作

第一段没有前一行,所以使用下一行,导致起始弧不规则......
这应该涵盖所有情况,希望我的手绘图有意义......