矩形相交算法 如何判斷兩個(gè)矩形是否相交?
如何判斷兩個(gè)矩形是否相交?1. 一個(gè)矩形在另一個(gè)矩形中只有一個(gè)角點(diǎn);2。一個(gè)矩形A在另一個(gè)矩形B的一側(cè)只有兩個(gè)頂角(在這種情況下,對(duì)于另一個(gè)矩形B,四個(gè)頂角在矩形A之外,所以我們需要交換判斷)。3.
如何判斷兩個(gè)矩形是否相交?
1. 一個(gè)矩形在另一個(gè)矩形中只有一個(gè)角點(diǎn);
2。一個(gè)矩形A在另一個(gè)矩形B的一側(cè)只有兩個(gè)頂角(在這種情況下,對(duì)于另一個(gè)矩形B,四個(gè)頂角在矩形A之外,所以我們需要交換判斷)。
3. 一個(gè)矩形穿過另一個(gè)。在考慮了三種情況之后,這位朋友覺得為這些情況編寫代碼太復(fù)雜了,所以他去論壇提問。有時(shí),程序員不得不從不同的方向思考。如果兩個(gè)矩形相交,一定有直線相交。只有水平線和垂直線可以交叉。兩條水平線或兩條垂直線不能交叉。所以,問題是找出是否有相交的水平線和垂直線。另外,a線和B線的交集相當(dāng)于B線和a線的交集,因此,編寫一個(gè)函數(shù)并多次調(diào)用就足夠了。不管怎樣,計(jì)算機(jī)是專門做簡(jiǎn)單而乏味的工作。函數(shù)如下:確定水平線和垂直線是否相交。函數(shù)的參數(shù)有:水平線左、水平線右、水平線y、垂直線向上、垂直線向下、垂直線X。布爾交叉線(左、右、y、上、下、X){//判斷水平線和垂直線是否交叉//水平線有三個(gè)參數(shù):左、右、y、上、下、X,right and Y//垂直線有三個(gè)參數(shù):top、bottom和X return(top<;Y)&&(bottom> Y)&&(left<;X)&&(right> X)這里有一個(gè)函數(shù)來判斷兩個(gè)矩形是否相交。只需再調(diào)用幾個(gè)相同的函數(shù)。Bool crossrect(crit&;R1,crit&;R2){//判斷兩個(gè)矩形是否相交,//從一個(gè)矩形中取一條水平線,判斷它是否與另一個(gè)矩形中的垂直線相交
應(yīng)該是。。如何解釋兩個(gè)等寬矩形相交重疊的部分是菱形。
讓相交形成的四邊形為ABCD,
通過a使AE⊥BC在E中,通過CF⊥AB在F中,
然后∠AEB=∠CFB=90°,
和兩個(gè)等寬矩形,AB//CD,AD//BC,AE=CF。
和∵Abe=∠CBF
;△AEB都等于△CBF
;AB=BC
和∵AB//CD,AD//BC
;,ABCD是平行四邊形
;,ABCD是菱形
兩個(gè)矩形相交重合的部分如何說明是菱形?
判斷相交比較麻煩,所以我用了不相交的情況。其他情況是交叉。當(dāng)一個(gè)矩形位于另一個(gè)矩形的上方或下方,或左側(cè)或右側(cè),并且有一定距離時(shí),這意味著這兩個(gè)矩形不相交t&r1,const Rect&r2){if((r1.y r1.h)