3

2つの2Dベクトル(左上、右下)を使用して位置が定義されている2つの長方形がある場合、それらが交差している点を確認するにはどうすればよいですか?

4

4 に答える 4

4

両方の長方形が交差するかどうかのテストだけでなく、実際に交差の結果が必要だと思います。

rect1 =(l1、t1、r1、b1)とrect2 =(l2、t2、r2、b2)の交点も長方形です。

rectIntersection = ( max(l1, l2), max(t1, t2), min(r1, r2), min(b1, b2) )

left >= right || top >= bottom長方形が左/上を含み、右/下を含むと仮定した場合、rectIntersectionはもちろん空です。

長方形が交差する場合

l1 < r2 && l2<r1 && t1<b2 && t2<t1
于 2009-12-04T10:03:35.790 に答える
2

原点がleft-top画面上にあると仮定します。

1つの長方形の左上が(x3,y3)別の長方形の右下よりも小さいかどうかを確認すると(x2,y2)、2つは交差しています。

ポイントはと(x2,|y2-y3|)です(|x2-x3|,y2)

これは、rectangle1の右側にあるrectangle1とreactangle2用です。

左の平行移動に逆を適用します。

于 2009-12-04T09:59:24.507 に答える
1

2つの長方形が重なっているのは、両方に共通の内部点X、Yが少なくとも1つあることです。最初のレクタブル{T1, L1, B1, R1}を2番目{T2, L2, B2, R2}(上、左、下、右)とします。これで、(X>L1)and(X<R1)(Y>T1)andに続き(Y<B1)、長方形2についても同様になります。From(X>L1)(X<R2)それはそれに続きます(L1<R2)。同様に(L2<R1)、、(T1<B2)および(T2<B1)

したがって、これらの4つの条件が必要です。それらも十分であるかどうかは直接明らかではありませんが、それも事実です。

于 2009-12-04T10:00:42.937 に答える
0

アルゴリズムを実装するよりも、ジョブを実行する関数に興味がある場合は、Windows でのIntersectRect 関数
を 確認してください。

于 2009-12-04T10:18:03.780 に答える