2014-12-02 206 views
2

我的问题多边形(或其部分)的圆形近似

的简短描述我需要实现从G1指示GCODE autorefactoring为3D打印G2和G3(http://www.cnccookbook.com/CCCNCGCodeArcsG02G03.htm)。

G1是一个与印刷的直线运动(路径由向量描述)。

我正在寻找algorytm aproxymate圆/弧(特别是它的中点)基于给定的矢量路径。 请注意,G2和G3不能打印不是圆的一部分的曲线 - 因此,不是每个矢量路径都可以用这种方式近似。我的问题

我在寻找办法来近似矢量路径的一部分(或全部)

详细说明(可以是正多边形,它还是inregular多边形部分的部分)由圆(弧)。首先,让我们重点关注修正多边形。

在图中我画了这个问题的不同情况。 注意:每个多边形都是由矢量构建的(就像在点5中一样)。 enter image description here

  1. 对完整x-gon的近似值。
  2. 逼近的一部分的X边形,其中一个侧是不同
  3. 近似X边形,其中两个侧边的每个是不同的,但彼此相等
  4. 近似X边形,其中两个边是不同(甚至没有部分X-GOM,所有边都相等

这不是故事的EOD除外)不等于

  • 逼近......有几个标准:

    • 圆的起点/终点必须位于矢量路径的开始/结束处。
    • 我需要知道圈子的中点。

    解决方案,我发现(好的和坏的):

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

    这是最简单的情况。我可以统计每个共享一个opint的各方之间的半径。如果他们有相同的长度和相等的角度,我可以计算圆的中点(属于垂直中线的点,每边一条中线),我有我需要的一切:起点,终点,中点,点。

    但是这种解决方案只适用于情况1和5。

    我真的没有IDE当我有病例2,3,4或inregural多边形的一部分

  • +0

    将案例2到4转到案例5中,方法是找到所有短边,然后将它们拉伸至与最长边相同。 – Kevin 2014-12-02 13:35:19

    +0

    我不能改变开始/结束点...这是痛苦。 – 2014-12-02 13:50:06

    +0

    它必须是一种非常奇怪的编程语言,您不能修改对象的值或创建修改后的副本。 – Kevin 2014-12-02 13:55:30

    回答

    2
    1. 您可以获取任何2个线段

      曲率半径中心做什么

      curve radius

      1. 找到李未列名中点
      2. 铸造的垂直线从每个(红线)
      3. 找到的交点(它是曲率中心)

      在对象的3D使用平面(3线而不是2) 。半径仅为中心线与连线点(蓝线)之间的距离。如果半径太大则处理这两种线为单线(没有交集或太远交点)

    2. 计算所有段像在#1

    3. 加入用相同的半径和中心到单个弧弧如果加入

    4. 处理改变曲率

      如果电弧被改变中心或半径做到像在这张图片

      elliptic arc

      第一段没有前行,以便利用未来,而不是导致不规则的起弧...

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

    +0

    很好的回答!它真的帮助我! :) 谢谢! – 2014-12-13 13:38:21

    +0

    @ Mr.Qbs我用这很多来获得轨迹曲率......我计算它的速度动力学约束,用于在多维曲线空间中的高级运动控制。确实尝试了很多方法,但最简单的是我所知道的最好的方法 – Spektre 2014-12-13 14:07:30

    0

    如果您的圆弧必须在给定的端点上开始和结束,那么中心点将位于介质的某个位置,并且保持单一自由度。

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