美文网首页
clipper处理凹多边形

clipper处理凹多边形

作者: 许彦峰 | 来源:发表于2022-05-28 12:14 被阅读0次

    官方对这个多边形运算的解释:



    对于Difference,如果是如下的情况:


    那么得到的结果,在solution里面只有一个多边形[a,b,m,1,4,c,d],即黄色的部分,是符合预期的。

    但如果是如下的情况:


    得到的solution结果里面是有2个多边形的,[a,b,c,d][1,2,3,4],如果再经过ply2tri运算后,只能得到[1,2,3,4],很明显不符合预期的。

    注意:clipper.Execute()有2个重载函数,PolyTree中可以拿到Holes的信息

    在clipper中,是能正常绘制出黄色区域的,看了源码的测试例后发现:



    solution的结果仍旧是[a,b,c,d][1,2,3,4],不过它的绘制方式发生了变化, 细分多边形Tess,在这篇文章中也解释了为啥使用Tess

    至此,也就确认问题在poly2tri,clipper本身的处理是没有问题的

    通过这个测试例会发现有个holes的概念,顾名思义就是可以在多边形内挖洞

    需要注意的是,poly2tri对Point的一些要求

    • hole必须在polygon内,不能和polygon相交
    • 2个不同的hole之间不能相交
    • hole、polygon不能有重复的点

    否则结果可能会不符合预期


    相关文章

      网友评论

          本文标题:clipper处理凹多边形

          本文链接:https://www.haomeiwen.com/subject/zuriprtx.html