2014-05-24 39 views
1

我有兩個矩形:的Java AWT的Rectangle相交

Rectangle rectZR = new Rectangle(513, 163, 38, 39); //(x,y,width,height) 
Rectangle rectCorrect = new Rectangle(76, 206, 44, 44); 

和我做的:

Rectangle intersect = rectZR.intersection(rectCorrect); 

作爲座標顯示,兩個矩形居然不相交,但Java仍然返回我的交集和intersect具有以下尺寸(x,y,寬度,高度):

513, 206, -393, -4 

這是一個錯誤,或者我做錯了什麼?

+1

如果你想知道矩形是否相交,你可以使用** intersects **方法。無論矩形是否相交,交集方法都會返回一個矩形。如果寬度和高度均爲負數,矩形不相交。 –

回答

3

JavaDoc上交叉方法規定:

計算此Rectangle與指定 Rectangle的交集。返回一個新的矩形,表示兩個矩形的交點。 如果兩個矩形不相交,結果 將是一個空矩形

雖然JavaDoc的整個類指定:

一個矩形,其寬度或高度是既無位置也不隨着負維度這些軸 尺寸。沿着這些軸將這種矩形 視爲不存在。 這樣的矩形也是 空關於包含計算和測試方法 如果它包含或相交點或矩形將始終返回 false。將這種矩形與點或矩形組合在一起的方法將完全忽略矩形以生成結果。 如果組合了兩個Rectangle對象,並且每個對象的維度都爲負值,則結果至少會有一個負值維度。

因此,與負兩個維度的交集所創建的矩形實際上意味着沒有交集。你可以用intersects()方法檢查:

boolean intersects = rectZR.intersects(rectCorrect);