栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java方法仅使用左底点,宽度和高度来查找是两个矩形相交的矩形?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java方法仅使用左底点,宽度和高度来查找是两个矩形相交的矩形?

为什么不使用JDK API为您做到这一点?

Rectangle rect1 = new Rectangle(100, 100, 200, 240);Rectangle rect2 = new Rectangle(120, 80, 80, 120);Rectangle intersection = rect1.intersection(rect2);

要使用

java.awt.Rectangle
类,构造函数的参数为​​:x,y,宽度,高度,其中x,y是矩形的左上角。您可以轻松地将左下角的点转换为左上角。


我推荐上述方法,但是如果您真的想自己做,可以按照以下步骤操作:

比方说

(x1, y1), (x2, y2)
分别
(x3, y3), (x4, y4)
是Rect1的左下角和右下角 。

  • 发现的较大的一个
    x1
    x3
    和中较小的一个
    x2
    x4
    比方说
    xL
    xR
    分别
    • 如果
      xL >= xR
      ,则不返回任何交集
  • 发现的较大的一个
    y1
    y3
    和中较小的一个
    y2
    y4
    比方说
    yT
    yB
    分别
    • 如果
      yT >= yB
      ,则不返回任何交集
    • 归还
      (xL, yB, xR-xL, yB-yT)

更像Java的伪代码:

// Two rectangles, assume the class name is `Rect`Rect r1 = new Rect(x1, y2, w1, h1);Rect r2 = new Rect(x3, y4, w2, h2);// get the coordinates of other points needed later:int x2 = x1 + w1;int x4 = x3 + w2;int y1 = y2 - h1;int y3 = y4 - h2;// find intersection:int xL = Math.max(x1, x3);int xR = Math.min(x2, x4);if (xR <= xL)    return null;else {    int yT = Math.max(y1, y3);    int yB = Math.min(y2, y4);    if (yB <= yT)        return null;    else        return new Rect(xL, yB, xR-xL, yB-yT);}

如您所见,如果您的矩形最初是由两个对角线定义的,则将更加容易,您只需要执行该

// find intersection
部分即可。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437917.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号