首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.awt.Rectangle。交集()

java.awt.Rectangle。交集()
EN

Stack Overflow用户
提问于 2013-05-27 18:44:53
回答 3查看 12.4K关注 0票数 1

当我决定使用java.awt.Rectangle来计算两个矩形之间的交集时,我正在开发一个任务。

我意识到输出结果与我预期的不同。我不确定我是否理解了这个方法是如何工作的。

有关示例中的值,请单击此处的java.awt.Rectangle[x=0,y=10,width=5,height=8] java.awt.Rectangle[x=3,y=15,width=17,height=14]

我希望交叉点是java.awt.Rectangle[x=3,y=10,width=2,height=8],但是程序输出的是java.awt.Rectangle[x=3,y=15,width=2,height=3]

下面是我的代码:

代码语言:javascript
复制
public void printIntersection(){ 
    Rectangle r1 = new Rectangle(0, 10, 5, 8);
    Rectangle r2 = new Rectangle(3, 15, 17, 14);
    Rectangle r3 = r1.intersection(r2);

    System.out.println(r1);
    System.out.println(r2);
    System.out.println(r3);

}

有人能帮我指出我在这里遗漏了什么吗?

更新:我混淆的原因是代码将构造函数中的(x,y)值视为左下角,而doc类建议它们是左上角!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-27 18:54:13

矩形的对角是(0,10),(5,18)(3,15),(20,29),所以交集是(3,15),(5,18),所以我认为结果是预期的。请注意,得到的结果的对角是第一个的右下角和第二个的左上角。

编辑:它的工作方式是:起点是(x,y),边的计算方法是在起点上加上宽度和高度,因此相对的角将是(x+width,y+height)

最后注意:(0,0)是画布的左上角:下面是一个示例:(0,0,4,4)和(2,2,4,4)相交是(2,2,2,2):(2,2)是画布的左上角,(2+2,2+2)是对角线

票数 0
EN

Stack Overflow用户

发布于 2013-05-27 19:05:20

你得到的答案是正确的。该方法的工作方式如下所示。

第一个矩形:

  • X坐标: 0
  • Y坐标:10
  • 宽度:5
  • 高度:8

<代码>F211

第二个矩形:

  • X坐标: 3
  • Y坐标:15
  • 宽度:17
  • 高度:14

<代码>F223

对于交叉点,X和Y坐标与第二个矩形相同。宽度为5-3=2,高度为18-15=3

票数 3
EN

Stack Overflow用户

发布于 2015-02-10 13:34:00

我在这方面也遇到了麻烦。我的想法是,使用的网格在y轴上是反转的。因为点0.0在屏幕的左上角,点0,1在该点的下方而不是上方,你可以通过颠倒原始代码中的y轴来获得你所期望的答案。

例如。

代码语言:javascript
复制
public void printIntersection(){ 
Rectangle r1 = new Rectangle(0, 10 * -1 , 5, 8);
Rectangle r2 = new Rectangle(3, 15 * -1, 17, 14);
Rectangle r3 = r1.intersection(r2);

System.out.println(r1);
System.out.println(r2);
System.out.println(r3);

}

这应该会给你你想要的答案

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16771435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档