簡單代碼:
int windowOverlap(Rectangle rect1, Rectangle rect2)
{
if (rect1.IntersectsWith(rect2))
{
Rectangle overlap = Rectangle.Intersect(rect1, rect2);
if (overlap.IsEmpty)
return overlap.Width * overlap.Height;
}
return 0;
}
原題:
我想知道和一個快速和骯髒的方法來檢查,如果兩個矩形重疊,如果他們這樣做計算重疊的區域。爲了好奇心,我對以下情況感興趣:1)兩個矩形中的所有線條都是垂直或水平的,或者2)任何兩個矩形的一般情況,但我真正需要的唯一答案是情況1.
double areaOfOverlap(Rect A, Rect B)
{
if (A.Intersects(B))
{
// calculate area
// return area
}
return 0;
}
對於A.Intersects()我用的是分離軸測試的思考,但如果矩形只有水平和垂直線條是否有一個更簡單的(快):我的線沿線的思考檢查方法?
並計算在它們交叉有一個快速的方法,如果只矩形水平線和垂直線做它的區域?
最後,這與問題無關,但我會感謝任何人可能有一個好的書/網頁的建議,我可以審查計算機圖形學的數學。我已經離開了大學一段時間,覺得我忘記了一切:)!任何人都有這個問題?
(注:我發現這個問題比this這似乎更復雜,不直接回答這個問題不同。)
水平矩形是一個豎長方形,取決於哪一方你考慮頂部 – 2009-10-11 17:57:08
** if(overlap.IsEmpty)** 應該是 ** if(!overlap.IsEmpty)** – ReinierDG 2010-06-16 11:28:30