Higuys,如何确定广场是否在矩形内?
在Java中,我不知道我怎么能确定一个正方形是一个矩形内,或在边缘触摸或在一个角落接触,如果它们给出:
- x和y方形的坐标,正方形的宽度
- x和矩形的y坐标,宽度&长度矩形
我知道我必须使用Math.abs(的),并找到x和y坐标差异,但我无法用数学公式来解决这个问题。
顺便说一句,所有数据类型都是双打。
即使你不了解Java,你对这个问题的数学表达式的想法将不胜感激。
在此先感谢。
Higuys,如何确定广场是否在矩形内?
在Java中,我不知道我怎么能确定一个正方形是一个矩形内,或在边缘触摸或在一个角落接触,如果它们给出:
我知道我必须使用Math.abs(的),并找到x和y坐标差异,但我无法用数学公式来解决这个问题。
顺便说一句,所有数据类型都是双打。
即使你不了解Java,你对这个问题的数学表达式的想法将不胜感激。
在此先感谢。
无论使用何种语言,您都可以通过以下朴素算法来确定它。
测试以查看矩形的所有点位于矩形内。您可能想要以这样一种方式定义函数,即如果矩形的点触及矩形的线条,则认为它在内部。
这功课吗?
解决方案的要点是检查边界。像:
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;
只是检查,看看是否左上角落在矩形的边界内,然后比较宽度和高度的长度。以下是一个简单的答案,如您所示,您需要实现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;
}
因为我们还没有标记这个问题为homework,我认为你可以使用标准库的方法:
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);
}
我有长方形和正方形的中心坐标,虽然。 – Dave 2011-02-04 05:57:56