如何使用boost将复杂多边形划分为简单多边形?

时间:2013-03-05 16:25:29

标签: algorithm boost

我正在寻找将复杂多边形(自相交多边形)转换为简单的凸多边形。

-----------------------------
 -                        -               
   -                    -
     -                -
       -            -
         -        -
           -    -
             -
           -    -
         -        -
       -            -
     -               -
    -                 -
   -                   -
   ----------------------

上面的图片应该会产生两个多边形(三角形)。

我正在使用boost库并使用boost库寻找解决方案。

1 个答案:

答案 0 :(得分:0)

让我们假设您的初始多边形是...... xa,xb,....,xc,xd,....(其中xi是顶点),边xa,xb和xc,xd相交。然后你有两个多边形:.... xa,xe,xd,...和xe,xb,...,xd。

现在如果两个多边形相交,它们必须在两个地方(甚至是多个地方)相交。如果两个多边形.... xa,xb,... xc,xd,....和... xe,xf,...... xg,xh,...相交于(xa,xb)(xe ,xf)和(xc,xd)(xg,xh)你有两组新的多边形,有两个新的顶点xi和xj(我会让你弄清楚这些多边形的确切性质)。

然后有算法来计算相交的线段对的列表。

将这三个部分组合在一起就可以获得算法。