【发布时间】:2013-12-11 03:19:15
【问题描述】:
上面是一个多边形(灰色区域),其中我减去了 4 个多边形(红色、绿色、紫色和蓝色区域)。有没有办法获取创建的 sub-多边形(小灰色多边形)的顶点?
多边形可以是任何形状。另外,边减去的多边形可以位于主多边形的一侧(这就是为什么我没有将其称为孔)。
【问题讨论】:
标签: algorithm polygon clipping
上面是一个多边形(灰色区域),其中我减去了 4 个多边形(红色、绿色、紫色和蓝色区域)。有没有办法获取创建的 sub-多边形(小灰色多边形)的顶点?
多边形可以是任何形状。另外,边减去的多边形可以位于主多边形的一侧(这就是为什么我没有将其称为孔)。
【问题讨论】:
标签: algorithm polygon clipping
算法:
我的建议是在这种特殊情况下,您对那些明亮的彩色多边形进行 UNION 操作。操作后,该解决方案由两个多边形组成:具有 CW 方向的外部多边形和具有 CCW 方向的孔多边形。您需要这个孔多边形并且要知道这两个中的哪一个是孔,您可以计算两者的面积。面积为负的多边形是孔多边形。
实施:
Clipper 库为您提供所需的 UNION 运算和面积计算运算(以及许多其他运算)。
Clipper 可用于例如。 C++、C#、Delphi 和 Javascript。
C++、C#、德尔福: https://sourceforge.net/projects/polyclipping/
Javascript:https://sourceforge.net/projects/jsclipper/
演示:http://jsclipper.sourceforge.net/6.2.1.0/main_demo.html
下图是 Clipper Javascript Demo 的截图。操作是 INTERSECT。
【讨论】: