c# - 查找两个矩形的重叠区域(在 C# 中)

标签 c# graphics overlap area rectangles

编辑:

我用来解决问题的简单代码,以防有人感兴趣(感谢 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/

相关文章:

java - invalidate() 不会导致调用 onDraw()

assembly - assembly x86-16 中的模式 X,为什么平面 1 未打印,而所有其他平面的顺序不正确?

css - 当窗口尺寸较小或在手机/平板电脑上时 Logo 重叠?

c# - 自定义区域适配器 (PRISM)

c# - 在 PDF 中可以悬停吗?

c# - 在roslyn中访问VS完整解决方案

java - 鼠标释放时删除带有颜色的矩形

c# - 无法按照教程创建动态搜索结果

html - CSS图片重叠定位

html - 链接在重叠的 Div 中不起作用