2011-06-27 56 views
1

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

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

回答

1

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

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

(顺便说一句,我不认为你要处理RectUnion作为具有潜在的在A或B中都没有太大的空间)。

哦,在你原来的问题上,这超出了我的图形能力,但基本技术似乎是在图形上下文中绘制两个路径(可能是使用异或)并查看哪些像素仍然保留。似乎有一些代码指向这里的方式:Clipping CGPath to a CGRect

+0

duh。谢谢。不知道我在想什么... –