我正在尝试检查2个CGPath之间的重叠程度。 我想出的最简单的方法是获得边界CGRects之间重叠的百分比。我知道当不同的路径占用类似的边界时,这将失败。但是哦,如果你知道更好的方法......请帮助。
无论如何,当前的问题是关于计算rects之间的重叠百分比。 我看到CGRectIntersection函数获取交集的矩形。我可以计算这个矩形的面积,但似乎没有一种简单的方法来获得非相交区域的面积。有任何想法吗?从rectUnion区域减去那个区域有意义吗?如果我正确理解了rectUnion,如果联合和交集大小相同,它们会完全重叠吗?
答案 0 :(得分:1)
我认为不太了解。 CGRect A的“非交叉区域”不是另一个B只是A的区域减去交叉区域吗?或者更重要的是,不是百分比重叠等于交叉区域除以合并的总面积:
Area(A ^ B)/(Area(A) + Area(B) - Area(A^B))
(顺便说一下,我认为你不想处理RectUnion,因为在A或B中可能都有很大的空间。)
哦,在你原来的问题上,这超出了我的图形能力,但基本技术似乎是在图形上下文中绘制两个路径(可能带有XOR)并查看哪些像素仍然保留。似乎有一些代码指向了这里:Clipping CGPath to a CGRect