代码之家  ›  专栏  ›  技术社区  ›  Grzegorz Adam Hankiewicz

如何创建没有自相交的平行多段线?

  •  3
  • Grzegorz Adam Hankiewicz  · 技术社区  · 16 年前

    创建与现有多段线平行多段线的简单算法很简单:可以计算每个顶点的法向(作为线段法向的平均值),并使用法向以任意数量替换顶点。

    然而,当我尝试在曲线折线上使用这个算法时,有一个图形问题,这是一个连续的点,形成一个弧。当我创建与圆弧多段线平行的线时,一切都很好,直到我增加足够的距离,使通过其法线投影的顶点创建一条多段线,在该多段线中,从一个顶点到另一个顶点的移动实际上是反向的,从而创建一个自相交。

    如何有效地从平行多段线中删除这些顶点?不过,我比较了段的方向:如果生成的段不是平行的,这意味着我到达了一个点,那就是平行多段线与自身相交。但是,对于小段(弯曲的多段线将生成更小的段)或最初具有退化顶点(一个顶点等于下一个顶点)的多段线,这并不适用。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Grzegorz Adam Hankiewicz    16 年前

    在图形圆中,平行多段线称为偏移多段线。看起来像是一种生成偏移多段线而不退化几何体的方法 Straight Skeleton 算法。

    我还找到了一篇关于这个问题的有趣论文,叫做 An offset algorithm for polyline curves .