给定一个任意多边形,其顶点以顺时针/逆时针方式存储(在图中描绘为黑色矩形),我需要能够从该多边形中减去任意数量的圆(图中红色)。删除一个圆圈可能会将多边形分成两个单独的多边形(如图中的第二条线所示)。
我不知道从哪里开始。
给定一个任意多边形,其顶点以顺时针/逆时针方式存储(在图中描绘为黑色矩形),我需要能够从该多边形中减去任意数量的圆(图中红色)。删除一个圆圈可能会将多边形分成两个单独的多边形(如图中的第二条线所示)。
我不知道从哪里开始。
警告:让代码完全正确地做到这一点是很棘手的。(从概念上讲这很好,但您很快就会陷入数值错误和边缘情况。)您基本上要求的是Constructive Solid Geometry的 2D 版本。您可能想看看是否可以使用由计算几何专家编写的现有库。这里有一些库可能会做你想做的事,但你必须选择一个最适合你的表示并将你所拥有的转换成那个表示。
这是一个免费的多边形裁剪库(用 Delphi 和 C++ 编写),可以满足您的要求:http: //sourceforge.net/projects/polyclipping/