2011-06-27 53 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。謝謝。不知道我在想什麼... –