2011-02-04 41 views
0

Higuys,如何确定广场是否在矩形内?

在Java中,我不知道我怎么能确定一个正方形是一个矩形内,或在边缘触摸或在一个角落接触,如果它们给出:

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

我知道我必须使用Math.abs(的),并找到x和y坐标差异,但我无法用数学公式来解决这个问题。

顺便说一句,所有数据类型都是双打。

即使你不了解Java,你对这个问题的数学表达式的想法将不胜感激。

在此先感谢。

回答

1

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

测试以查看矩形的所有点位于矩形内。您可能想要以这样一种方式定义函数,即如果矩形的点触及矩形的线条,则认为它在内部。

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; 
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; 
} 
+0

我有长方形和正方形的中心坐标,虽然。 – Dave 2011-02-04 05:57:56

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); 
} 
相关问题