所以我有两个矩形,用户必须输入左下角点(x1,y1,但y1始终为0)和右上角点(x2,y2),我必须找出它们中是否有一个完全包含另一个(或它们完全相同)。
这会有点困难,因为我实际上必须编写程序,让用户可以决定他们想要创建多少个矩形,但是起初,如果我知道如何在两个矩形的情况下检查,我会很高兴。
这会有点困难,因为我实际上必须编写程序,让用户可以决定他们想要创建多少个矩形,但是起初,如果我知道如何在两个矩形的情况下检查,我会很高兴。
以下是将内矩形的边与外矩形的边进行比较。
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));
}