我的问题的简短描述
我需要实现从G1指令到G2和G3(http://www.cnccookbook.com/CCCNCGCodeArcsG02G03.htm)的GCODE自动重构以进行3D打印。
G1是打印的直线运动(路径用矢量描述)。
我根据给定的矢量路径搜索algorytm到aproxymate circle / arc(特别是它的中点)。 请注意,G2和G3不能打印不属于圆的曲线 - 因此并非每个矢量路径都是近似的。
我的问题的长篇描述
我通过圆(弧)搜索近似部分(或全部)矢量路径(可以是正多边形,部分或不规则多边形部分)的方法。 但是,首先,让我们关注一些棱镜多边形。
在图片中我画了这个问题的不同案例。 注意: 每个多边形都是由向量构建的(如第5点所示)。
它不是故事的主题......有几个标准:
我找到的解决方案(好的和坏的):
1)和5) - 我的简单解决方案
这是最简单的情况。我可以计算共享一个opint的每一方之间的半径。如果他们有相同的长度和每个之间的角度是相等的,我可以计算圆中点(作为属于垂直中线的点,每边一个中线),我有我需要的全部:起点,终点,中 - 点。
但此解决方案仅适用于案例1和5。
当我遇到2,3,4或者多边形的部分
时,我真的不知道该怎么做答案 0 :(得分:2)
您可以获取任意2个线段的曲率半径中心
在 3D 中使用对象的平面(3行不是2)。半径只是中心和线关节点之间的距离(蓝线)。如果半径太大,则将两条线作为单线处理(没有交叉点或太远的交叉点)
计算所有细分,例如#1
连接具有相同半径的弧线,如果已加入则将中心连接到单个弧
处理曲率变化
如果弧正在改变中心或半径,请按照此图片进行操作
第一段没有前一行,所以使用下一行而不是导致开始弧的不规则...
这应该涵盖所有情况,希望我的手绘图画有意义......
答案 1 :(得分:0)
如果您的圆弧必须在给定的端点上开始和结束,那么中心点将位于mediatrix上的某个位置,并且仍有一个自由度。
因此,您可以使用最小二乘法找到最佳拟合:假设您知道半径,它给出了中心,并计算剩余顶点到圆周的平方距离之和(到中心的距离减半径) )。最合适的是最小化该总和的那个。让我们希望有一个分析解决方案。