编辑:
我用来解决问题的简单代码,以防有人感兴趣(感谢 Fredrik):
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 不同,它看起来更复杂并且没有直接回答问题。)
最佳答案
也许我误解了你的问题,但 Rectangle.Intersect
不是吗?方法做的工作?它返回相交面积,然后您可以轻松计算它的面积。
关于c# - 查找两个矩形的重叠区域(在 C# 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1551243/