判斷兩矩形是否相交


近期一次筆試中考到了這個題目,答題之后回來再看,發現網上的解答有些十分復雜,讓人懶得去看。

隱約記得之前學習計算機圖像學的課程時有這個算法。

我把自己的思路記下來,如有遺漏情況沒有考慮或者方法有問題,歡迎拍磚:P

問題定義:給定兩個邊與坐標軸平行的矩形,分別由左上角與右下角兩點指定,即矩形(P1,P2)與(P3,P4),判斷兩矩形是否相交。

我的思路:如下圖所示,首先求出P1與P3點在X方向較大值與Y方向較大值的交點,在下圖中就是P3,用紅點(記為M點)表示。

然后求出P2與P4點在X方向較小值與Y方向較小值的交點,在下圖中就是P2,用橙色點(記為N點)表示。

如果M點的X坐標和Y坐標值均比N點相應的X坐標和Y坐標值小,亦即M和N可以分別構成一個矩形的左上角點和右上角點,則兩矩形相交;其余情況則不相交。

                                   圖1

 

 

下圖給出第二個示例,表明相交則矩形的某一個頂點位於另一矩形內部作為判斷依據是錯誤的。

                            圖2

 

圖3給出了相互包含的情況:

                            圖3

下圖給出了不相交時的示例,兩矩形為上下關系,可見紅點不在橙色點左上角,不能構成矩形,因此不相交。

                          圖4

 

下面的例子同上,給出了兩矩形為左右關系的情況。

                 圖5


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM