美文网首页
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