問題定義:給定兩個邊與座標軸平行的矩形,分別由左上角與右下角兩點指定(以此同時,我們可以用右上和左下的兩個點來進行推出同樣的結果。),即矩形(p1,p2)與(p3,p4),判斷兩矩形是否相交。
我的思路:如下圖所示,首先求出p1與p3點在x方向較大值與y方向較大值的交點,在下圖中就是p3,用紅點(記為m點)表示。
然後求出p2與p4點在x方向較小值與y方向較小值的交點,在下圖中就是p2,用橙色點(記為n點)表示。
如果m點的x座標和y座標值均比n點相應的x座標和y座標值小,亦即m和n可以分別構成乙個矩形的左上角點和右上角點,則兩矩形相交;其餘情況則不相交。
下圖給出第二個示例,表明相交則矩形的某乙個頂點位於另一矩形內部作為判斷依據是錯誤的。
圖3給出了相互包含的情況:
下圖給出了不相交時的示例,兩矩形為上下關係,可見紅點不在橙色點左上角,不能構成矩形,因此不相交。
下面的例子同上,給出了兩矩形為左右關係的情況。
判斷兩矩形是否相交
判斷兩矩形是否相交,因若矩形相交時,在x軸方向和y軸方向必然存在重疊的部分,因此可將其轉化為兩條直線是否重疊的問題上。假設矩形的表示方法為 class rectangle x,y為矩形的位置點,width表示長,height表示寬。width與height可為正負數。width 0,height 0...
判斷矩形是否相交
假定矩形是用一對點表達的 minx,miny maxx,maxy 那麼兩個矩形 rect1 rect2 相交的結果一定是個矩形,構成這個相交矩形rect的點對座標是 minx max minx1,minx2 miny max miny1,miny2 maxx min maxx1,maxx2 maxy...
計算幾何之 判斷兩個線段是否相交
1.判斷兩個線段是否相交,需要檢測線段是否兩兩橫跨。所謂橫跨,即是點p1 位於向量n 的一邊,且另一點p2 位於向量n 的另一邊 2.此外,還需考慮邊界情況,即一條線段的某個端點位於另一條線段上。判斷線段p1p2,p3p4 是否相交,演算法流程如下 segment intersect p1,p2,p...