假定矩形是用一對(duì)點(diǎn)表達(dá)的(minx, miny) (maxx, maxy),那么兩個(gè)矩形
rect1{(minx1, miny1)(maxx1, maxy1)}
rect2{(minx2, miny2)(maxx2, maxy2)}
相交的結(jié)果一定是個(gè)矩形,構(gòu)成這個(gè)相交矩形rect{(minx, miny) (maxx, maxy)}的點(diǎn)對(duì)坐標(biāo)是:
minx = max(minx1, minx2)
miny = max(miny1, miny2)
maxx = min(maxx1, maxx2)
maxy = min(maxy1, maxy2)
如果兩個(gè)矩形不相交,那么計(jì)算得到的點(diǎn)對(duì)坐標(biāo)必然滿足:
( minx > maxx ) 或者 ( miny > maxy )
判定是否相交,以及相交矩形是什么都可以用這個(gè)方法一體計(jì)算完成。
從這個(gè)算法的結(jié)果上,我們還可以簡(jiǎn)單的生成出下面的兩個(gè)內(nèi)容:
㈠ 相交矩形: (minx, miny) (maxx, maxy)
㈡ 面積: 面積的計(jì)算可以和判定一起進(jìn)行
if ( minx>maxx ) return 0;
if ( miny>maxy ) return 0;
return (maxx-minx)*(maxy-miny)