最近项目中遇到一个问题,需要判断两个矩形是否有重合,以及重合的面积是否超过指定值。
其实是一个很简单的数学问题,这里发出来给大家分享一下。
先说思路,**同一坐标系下**,判断两个矩形是否有重合,有以下三种情况:
1、两个矩形,其中一个包含在另一个之中,这种肯定是重合的;
2、两个矩形,完全不重合,即没有交叉重合的区域;
3、两个矩形,有部分重合在一起,形成一个新的重合矩形。
我们这里说一下第三种情况
矩形rect1和rect2交叉,形成新的重合矩形rect3,根据图形可以看出,
矩形rect3的Left=rect2.Left,Top=rect2.Top,Right=rect1.Right,Bottom=rect1.Bottom。
/// <summary>
/// 判断两个矩形是否重合(重合部分大于较小矩形面积的一定比例)
/// </summary>
/// <param name="rect1">矩形1</param>
/// <param name="rect2">矩形2</param>
/// <param name="ratio">重合矩形面积与较小矩形面积的比率(百分比)</param>
/// <returns></returns>
public static bool RectIsCoincide(Rectangle rect1, Rectangle rect2, int ratio)
{