代码之家  ›  专栏  ›  技术社区  ›  sum1stolemyname

如何创建带线段的二维圆弧的近似值?

  •  4
  • sum1stolemyname  · 技术社区  · 15 年前

    我有一个多段线轮廓,由直线段和圆弧组成,我想把它们拉伸成棱柱。

    因为我的挤压函数只支持直边多边形,所以我需要使用直线段来近似圆弧。

    弧通过起点、中心点和扫描角(CCW)定义。

    我需要显示的扫描角度范围为<10_°到179.9_°之间,半径范围为.3 mm到300 mm。

    我现在计算一些弧顶点来计算,并以一种原始的方式将它们添加到我的多边形中:我只是在给定弧长的每毫米上放置一个顶点。 虽然这是可行的,但它似乎是非常低效的弧大半径和小扫掠角。

    必须有一种算法能够为各种弧生成良好的近似值。如果有的话,我想知道一些关键词来缩小我的搜索范围。

    1 回复  |  直到 15 年前
        1
  •  4
  •   dmuir    15 年前

    如果一条弧具有扫掠角a,半径r,则具有相同端点的弦与该弧之间的最大距离为r*(1-cos(a/2)。如果通过沿此弧放置n个等距点来细分此弧,则弧与分段线之间的最大距离将为r*(1-cos(a/(2*(n+1)))。

    所以,如果你想保持e以下的最大距离,比如说,你可以沿着弧放置n个新的点,选择n,这样n+1>=a/(2*acos(1-e/r))。

    推荐文章