判斷圓和矩形是否相交(非面積相交)

2021-06-27 09:07:36 字數 1189 閱讀 5452

題解。

問題很簡單,給你乙個矩形和乙個圓,問你是否他們相交。注意,這裡的相交不是面積相交。也就是說,圓在矩形內(且不相切)是不相交的。或者矩形在圓內(且矩形的四個點不在圓上)也是不相交的。

那麼,我們怎麼來判斷呢?

中間輪廓線是矩形的邊,各向外和內距離為圓半徑r劃線(當然,四個角的肯定不太標準)。

如果圓心在紅色區域的話,肯定是會與圓相交了。。。

當然,如果我們根本畫不出來這種圖形的話。也就是說,可能存在的情況就是圓把矩形給包含在內了,否則的話如果,存在圓心距某一邊的距離小於半徑r的話,必相交。

code:

#include #include #include #include #include using namespace std;

const double eps = 1e-8;

const double pi = acos(-1);

struct point

point() {}

};struct seg

seg(point x, point y)

};struct line

line(point x, point y)

};struct cir

cir(point oo, double rr)

};struct rec

rec(point a, point b, point c, point d)

};int dcmp(double x)

double x, y, r;

double x1, yy1, x2, y2;

double cross(point o, point a, point b)

double dis(point a, point b)

double pointtoline(point p, line l)

double pointtoseg(point p, seg s)

return pointtoline(p, line(s.a, s.b));}//

bool circle_rectangle_cross(cir o, rec r)

int main()

return 0;

}

判斷矩形是否相交

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

判斷兩個矩形是否相交,相交區域面積

直接上 package companychukongkeji 兩個矩形都是平行於x,y軸,判斷是否相交。兩種方法,都需要檢查特殊情況。public class rectangleintersect if a.top b.bottom a.right b.left a.bottom b.top a.l...

判斷兩矩形是否相交

判斷兩矩形是否相交,因若矩形相交時,在x軸方向和y軸方向必然存在重疊的部分,因此可將其轉化為兩條直線是否重疊的問題上。假設矩形的表示方法為 class rectangle x,y為矩形的位置點,width表示長,height表示寬。width與height可為正負數。width 0,height 0...