在iOS上组合相交CGPath

在iOS上组合相交CGPath,第1张

概述我在正在处理的应用程序中遇到问题.假设我有两个相当复杂的CGPath,我将它们都添加到CGMutablePath(因此将它们组合在一起).那么,在两条路径相交的地方,将会有彼此内部的点.我想消除那些内部点,并基本上绘制路径的外部或轮廓.我很难搞清楚如何解决这个问题. 编辑:这是我正在谈论的一个例子.蓝色和红色框表示沿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来提取路径的顶点.

总结

以上是内存溢出为你收集整理的在iOS上组合相交CGPath全部内容,希望文章能够帮你解决在iOS上组合相交CGPath所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1068444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存