2

我正在尝试检查 2 个 CGPath 之间的重叠程度。我想出的最简单的方法是获取边界 CGRects 之间重叠的百分比。我知道当不同的路径占据相似的界限时这会失败。但是哦,好吧,如果你知道更好的方法......请帮忙。

无论如何,当前的问题是关于计算矩形之间的重叠百分比。我看到 CGRectIntersection 函数来获得相交的矩形。我可以计算这个矩形的面积,但似乎没有一种简单的方法来获得非相交区域的面积。有任何想法吗?从 rectUnion 的区域中减去该区域是否有意义?如果我正确理解 rectUnion ,如果联合和交叉点的大小相同,它们完全重叠吗?

4

1 回答 1

1

不太明白,我觉得。CGRect A与另一个B的“非相交区域”不是只是A的面积减去相交区域吗?或者更重要的是,重叠百分比不等于相交面积除以总面积:

Area(A ^ B)/(Area(A) + Area(B) - Area(A^B))

(顺便说一句,我认为您不想处理 RectUnion ,因为它可能在 A 或 B 中都没有大量空间。)

哦,关于您最初的问题,这超出了我的图形能力,但基本技术似乎是在图形上下文中绘制两个路径(可能使用 XOR)并查看哪些像素仍然存在。似乎有一些代码指向这里:Clipping CGPath to a CGRect

于 2011-06-27T03:13:57.043 回答