如何确定方形是否在矩形内?

时间:2011-02-04 05:36:36

标签: java

Higuys,

在Java中,我想知道如何判断一个正方形是在一个矩形内,还是在边缘处触摸或在一个角落触摸,如果给出了这些:

  • 正方形的x和y坐标,正方形的宽度
  • 矩形的x和y坐标,宽度和宽度。矩形的长度

我知道我必须使用Math.abs()并找到x和y坐标差异,但我无法用数学方法表达问题。

顺便说一下,所有数据类型都是双倍的。

即使您不了解Java,您对此问题的数学表述的想法也会非常感激。

提前致谢。

4 个答案:

答案 0 :(得分:1)

无论使用何种语言,您都可以通过以下天真算法来确定它。

测试以查看正方形的所有点是否位于矩形内。您可能希望以这样的方式定义函数:如果正方形点接触矩形线,则认为它在内部。

答案 1 :(得分:1)

由于您尚未将此问题标记为,我假设您可以使用标准库方法:

static boolean isSquareInRectangle(sx, sy, sw, rx, ry, rw, rh) {
    Rectangle2D s = new Rectangle2D.Double(sx, sy, sw, sw),
                r = new Rectangle2D.Double(rx, ry, rw, rh);
    return r.contains(s);
}

答案 2 :(得分:0)

这是家庭作业吗?

解决方案的要点是检查边界。像:

boolean inside=square.x>=rectangle.x && square.x+square.width<=rectangle.x+rectangle.width
  && square.y>=rectangle.y && square.y+square.width<=rectangle.y+rectangle.height;

答案 3 :(得分:0)

只需检查左上角是否落在矩形的边界内,然后比较宽度和高度的长度。以下是一个简化的答案,如您所示,您需要实现Math.Abs​​()来校正负坐标。

bool IsInside(Square s, Rectangle r) {
    if (s.x < r.x) return false;
    if (s.y > r.y) return false;
    if ((r.Width - r.x) < (s.Width - s.x)) return false;
    if ((r.Height - r.y) < (s.Width - s.y)) return false;

    return true;
}