判断一个矩形是否在另一个矩形内 [C]

Find out if a rectangle is inside another rectangle [C]

所以我有两个矩形,用户必须输入左下角点(x1,y1,但 y1 始终为 0)和右上角点(x2,y2),我必须找出是否有一个它们中的一个完全在另一个里面(或者它们完全一样)。

这会有点困难,因为我实际上必须制作程序,以便用户可以决定他们想要创建多少个矩形,但首先我很乐意知道如何签入2个矩形的情况。

好吧,根据定义,如果内部矩形的所有点都在外部矩形内,则一个矩形位于另一个矩形内部。使用一点几何学,您可以将其归结为检查内部矩形的两个相对角是否在外部矩形中。

下面比较了内部矩形的边和外部矩形的边

if Right2 < Right1 && Left2 > Left1 && Top2 > Top1 && Bottom2 < Bottom1

实施:

struct RECT
{
    double x,y, w,h;

    RECT(double a,double b,double c,double d)
    {
    x=a; y=b; w=c; h=d;
    }
};


bool contains(RECT R1, RECT R2)
{
    if (   (R2.x+R2.w) < (R1.x+R1.w)
        && (R2.x) > (R1.x)
        && (R2.y) > (R1.y)
        && (R2.y+R2.h) < (R1.y+R1.h)
        )
    {
        return true;
    }
    else
    {
        return false;
    }
}

以后总比没有好,对吧? 我相信这是短代码:

private bool IsInside(Rectangle outer, Rectangle inner)
{
    return outer.Contains(inner)
        && outer.Contains(Point.Add(inner.Location, inner.Size));
}