兩個矩形相交問題 判斷是否相交

2022-03-26 08:33:17 字數 1019 閱讀 2866

最近,面試遇到一道演算法題目如下:

兩個矩形,判斷是否相交;如果相交面積大於零,輸出相交部分的左上角以及右下角座標點,否則,輸出(-1,-1)、(-1,-1)。

沒有給出完善的解決方案,在面試官的細心引導下,解決了兩個線段相交輸出交點的問題。因此下來在網上搜了相關的問題。

1)下面是**判斷兩個矩形是否相交的方法:

下圖是兩個矩形相交的5種情況:

如果兩個矩形相交,那麼矩形a b的中心點和矩形的邊長是有一定關係的。

case 2345中,兩個中心點間的距離肯定小於ab邊長和的一半。

case 1中就像等了。

設a[x01,y01,x02,y02]  b[x11,y11,x12,y12].

矩形a和矩形b物理中心點x方向的距離為lx:abs( (x01+x02)/2 – (x11+x12) /2)

矩形a和矩形b物理中心點y方向的距離為ly:abs( (y01+y02)/2 – (y11+y12) /2)

矩形a和矩形b x方向的邊長為 sax:abs(x01-x02)  sbx: abs(x11-x12)

矩形a和矩形b y方向的邊長為 say:abs(y01-y02)  sby: abs(y11-y12)

如果ab相交,則滿足下列關係:

lx <= (sax + sbx)/2 && ly <=(say+ sby)/2

1

static uint8_t is_rect_intersect(int x01, int x02, int y01, int

y02,

2int x11, int x12, int y11, int

y12)

3

2)如何確定相交部分矩形的左上角座標和右下角座標,網上看了很多版本,總覺得不全面。(比如好多都是在原有的兩個矩形的座標中中確定相交矩形的座標,明顯忽略了交點是兩個矩形邊相交的情況(如下圖),等後面學習到全面的答案,再做補充)

如何判斷兩個矩形相交

2009 09 22 00 39 16 標籤 分類 gis 假定矩形是用一對點表達的 minx,miny maxx,maxy 那麼兩個矩形 rect1 rect2 相交的結果一定是個矩形,構成這個相交矩形rect的點對座標是 minx max minx1,minx2 miny max miny1,m...

如何判斷兩個矩形相交

假定矩形是用一對點表達的 minx,miny maxx,maxy 那麼兩個矩形 rect1 rect2 相交的結果一定是個矩形,構成這個相交矩形rect的點對座標是 minx max minx1,minx2 miny max miny1,miny2 maxx min maxx1,maxx2 maxy...

判斷兩個矩形相交以及求出相交的區域

問題 給定兩個矩形a和b,矩形a的左上角座標為 xa1,ya1 右下角座標為 xa2,ya2 矩形b的左上角座標為 xb1,yb1 右下角 座標為 xb2,yb2 1 設計乙個演算法,確定兩個矩形是否相交 即有重疊區域 2 如果兩個矩形相交,設計乙個演算法,求出相交的區域矩形 1 對於這個問題,一般...