通过减去多边形创建的多边形

时间:2013-11-26 05:39:16

标签: algorithm polygon clipping

Sample polygon and its illustrated holes

上面是一个多边形(灰色区域),其中我减去了4个多边形(红色,绿色,紫色和蓝色区域)。有没有办法获取创建的 sub -polygon(小灰色多边形)的顶点?

Sample polygon, holes removed

多边形可以是任何形状。此外,侧面减去多边形可以位于主多边形的一侧(这就是为什么我没有将其称为孔)。

2 个答案:

答案 0 :(得分:1)

您想要研究像Vatti这样的剪辑算法。或者您可能想要gpc的某些端口或绑定。

答案 1 :(得分:0)

算法:

我的建议就是在这种特殊情况下你对那些明亮的彩色多边形进行UNION操作。在操作之后,该解决方案由两个多边形组成:外部具有方向CW和具有CCW方向的孔多边形。你需要这个洞多边形,并知道这两个洞中的哪一个是洞,你可以计算两者的面积。具有负区域的多边形是孔多边形。

实现:

Clipper库为您提供所需的UNION操作和区域计算操作(以及许多其他操作)。

Clipper可用于例如。 C ++,C#,Delphi和Javascript。

C ++,C#,Delphi: https://sourceforge.net/projects/polyclipping/

Javascript:https://sourceforge.net/projects/jsclipper/
演示:http://jsclipper.sourceforge.net/6.2.1.0/main_demo.html

下图是Clipper Javascript演示的屏幕截图。该操作是INTERSECT。

enter image description here