Higuys,
在Java中,我想知道如何判断一个正方形是在一个矩形内,还是在边缘处触摸或在一个角落触摸,如果给出了这些:
我知道我必须使用Math.abs()并找到x和y坐标差异,但我无法用数学方法表达问题。
顺便说一下,所有数据类型都是双倍的。
即使您不了解Java,您对此问题的数学表述的想法也会非常感激。
提前致谢。
答案 0 :(得分:1)
无论使用何种语言,您都可以通过以下天真算法来确定它。
测试以查看正方形的所有点是否位于矩形内。您可能希望以这样的方式定义函数:如果正方形点接触矩形线,则认为它在内部。
答案 1 :(得分:1)
由于您尚未将此问题标记为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);
}
答案 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;
}