Math 如何从任意多边形中减去圆

Math 如何从任意多边形中减去圆,math,polygon,subtraction,Math,Polygon,Subtraction,给定一个任意多边形,其顶点以顺时针/逆时针的方式存储(图中描绘为黑色矩形),我需要能够从该多边形中减去任意数量的圆(图中红色)。删除一个圆可能会将多边形拆分为两个独立的多边形(如图中第二行所示) 我不知道从哪里开始 警告:要让代码完全正确地执行此操作是很棘手的。(从概念上讲这很好,但你很快就会陷入数字错误和边缘情况中。)你基本上要求的是2D版本的。您可能想看看是否可以使用由计算几何专家编写的现有库。有些库可能会满足您的需要,但您必须选择最适合您的表示形式,并将您拥有的转换为该表示形式。这里有一个

给定一个任意多边形,其顶点以顺时针/逆时针的方式存储(图中描绘为黑色矩形),我需要能够从该多边形中减去任意数量的圆(图中红色)。删除一个圆可能会将多边形拆分为两个独立的多边形(如图中第二行所示)

我不知道从哪里开始


警告:要让代码完全正确地执行此操作是很棘手的。(从概念上讲这很好,但你很快就会陷入数字错误和边缘情况中。)你基本上要求的是2D版本的。您可能想看看是否可以使用由计算几何专家编写的现有库。有些库可能会满足您的需要,但您必须选择最适合您的表示形式,并将您拥有的转换为该表示形式。

这里有一个免费的多边形剪裁库(用Delphi和C++编写),它可以满足您的要求:

删除磁盘后,该表示形式不再是“多边形”.但是你想要什么形式的输出?用顶点或曲线方程对结果形状进行近似?需要垂直近似一个圆或其他椭球体有无限多个顶点。