给定一个具有以顺时针/逆时针方式存储的顶点的任意多边形(在图中描绘为黑色矩形),我需要能够从该多边形中减去任意数量的圆(图中的红色)。删除圆可能会将多边形拆分为两个单独的多边形(如图中第二行所示)。
我不知道从哪里开始。
Example http://www.freeimagehosting.net/uploads/89a0276d9d.jpg
答案 0 :(得分:2)
警告:获取完全正确执行此操作的代码非常棘手。 (从概念上讲它很好,但你很快就会陷入数值误差和边缘情况。)你基本上要求的是Constructive Solid Geometry的2D版本。您可能希望查看是否可以使用计算几何中的专家编写的现有库。有些库here可能会做你想要的,但你必须选择一个最适合你的表示,并将你所拥有的内容转换成该表示。
答案 1 :(得分:0)
这是一个免费的多边形裁剪库(用Delphi和C ++编写),可以满足您的要求:http://sourceforge.net/projects/polyclipping/