3

我的问题的简短描述

我需要为 3D 打印实现从 G1 指令到 G2 和 G3 ( http://www.cnccookbook.com/CCCNCGCodeArcsG02G03.htm ) 的GCODE 自动重构。

G1 是带有打印的直线运动(路径由矢量描述)。

我正在搜索基于给定向量路径的算法来近似圆/弧(特别是它的中点)。请注意,G2 和 G3 无法打印不属于圆的曲线 - 因此并非每个向量路径都可以通过这种方式进行近似。

我的问题的详细描述

我正在寻找通过圆(弧)近似部分(或全部)矢量路径(可以是正多边形、部分或不规则多边形部分)的方法。但是,首先让我们关注正则多边形。

在图片中,我画了这个问题的不同案例。 注意:每个多边形都是由向量构建的(如第 5 点)。 在此处输入图像描述

  1. 对全 x 边形的逼近。
  2. 一侧不同的部分 x-gon 的近似值
  3. x-gon 的近似值,其中两条边不同但彼此相等
  4. x-gon 的近似值,其中两条边不同(甚至彼此不相等)不相等
  5. 所有边相等的部分 x-gom 的近似值

这不是故事的结局……有几个标准:

  • 圆的起点/终点必须在向量路径的起点/终点。
  • 我需要知道圆圈的中点。

我找到的解决方案(好的和坏的):

1) 和 5) - 我的简单解决方案

这是最简单的情况。我可以计算共享一个观点的每一侧之间的半径。如果它们具有相同的长度并且每个之间的角度相等,我可以计算圆的中点(作为属于垂直中线的点,每边一条中线)并且我有我需要的一切:起点,终点,中点观点。

但此解决方案仅适用于案例 1 和 5。

当我有案例 2、3、4 或不规则多边形的部分时,我真的不知道该怎么办

4

2 回答 2

5
  1. 您可以获得任意 2 条线段的曲率半径中心

    曲线半径

    1. 找到线的中点
    2. 从每个(红线)投射垂直线
    3. 找到交点(它是曲率的中心)

    3D中使用对象的平面(3 行而不是 2)。半径只是中心和线连接点(蓝线)之间的距离。如果半径太大,则将两条线作为单线处理(没有交叉点或交叉点太远)

  2. 计算 #1 中的所有段

  3. 如果连接,则将具有相同半径和中心的弧连接到单个弧

  4. 处理不断变化的曲率

    如果圆弧正在改变中心或半径,请像这张图片一样

    椭圆弧

    第一段没有上一行,所以使用下一行代替,这会导致开始弧处不规则......

这应该涵盖所有情况,希望我的手绘图有意义......

于 2014-12-02T14:37:16.480 回答
1

如果您的圆弧必须在给定的端点上开始和结束,那么中心点将位于中间线上的某个位置,并且仍然有一个自由度。

因此,您可以使用最小二乘法来找到最佳拟合:假设您知道半径,它为您提供中心,并计算剩余顶点到圆周的距离平方和(到中心的距离减去半径)。最合适的是最小化该总和的那个。让我们希望有一个分析解决方案。

于 2014-12-02T16:33:34.987 回答