2011-06-27 10 views
1

私は2つのCGPath間の重複度をチェックしようとしています。 私が思いついた最も簡単な方法は、境界CGRect間の重なりの割合を取得することです。私は、異なるパスが同じような境界を占める場合、これが失敗することを知っています。しかし、ああ、もしあなたがより良い方法を知っていれば...助けてください。とにかく、現在の質問は、矩形間の重複の割合を計算します。 交差点の矩形を取得するCGRectIntersection関数があります。私はこのrectの面積を計算することができますが、交差していない領域の面積を取得する簡単な方法はないようです。何か案は? rectUnionの領域からその領域を減算すると意味がありますか? rectUnionが正しく理解されていれば、共用体と交差点が同じサイズであれば、それらは完全に重なり合っていますか?交点の量?

答えて

1

わかりません。 CGRect Aの「交差していない領域」は、Aの領域から交差領域を引いたものとは別のものですか?またはポイントにより、合計面積で割っ交差するエリアにちょうど等しい割合オーバーラップされていません:それは潜在的に持っているよう

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

は(ところで、私はあなたがRectUnionに対処したいとは思いません

これは私のグラフィックス能力を超えていますが、基本的なテクニックは、両方のパスをグラフィックコンテキスト(多分XOR )、どのピクセルがまだ残っているかを確認します。ここにあるコードを指しているようです:Clipping CGPath to a CGRect

+0

duh。ありがとう。私は何を考えていたのか分からない –