在iOS上组合相交CGPath

我在正在处理的应用程序中遇到问题.假设我有两个相当复杂的CGPath,我将它们都添加到CGMutablePath(因此将它们组合在一起).那么,在两条路径相交的地方,将会有彼此内部的点.我想消除那些内部点,并基本上绘制路径的外部或轮廓.我很难搞清楚如何解决这个问题.

编辑:这是我正在谈论的一个例子.蓝色和红色框表示沿CGPath的点.红色框是两个路径中的点.我想以某种方式消除红点并重新绘制路径的轮廓.

你所描述的是路径内部的结合.

如果您的路径包含曲线,这是一个难题.

但是,您的示例仅显示直线段,因此我假设您只关心仅包含直线段的路径.

在这种情况下,您需要一个多边形联合函数.这种算法在称为“计算几何”的领域中非常基础.我不知道任何Objective-C特定的多边形联合实现.您可能能够找到纯C库,但查找C库要容易得多.如果您将文件扩展名从.m更改为.mm,则可以使用C.以下是一些可以计算多边形联合的C库:

> Clipper
> GEOS – 见Polygon::Union
> CGAL – 见2D Regularized Boolean Set-Operations
> boost几何 – 见union_

请注意,在所有情况下,如果您还没有其他格式的顶点,则需要使用CGPathApply来提取路径的顶点.

相关文章
相关标签/搜索