Java AWT矩形交集

时间:2014-05-24 18:56:04

标签: java awt rectangles intersect

我有两个矩形:

Rectangle rectZR = new Rectangle(513, 163, 38, 39); //(x,y,width,height)
Rectangle rectCorrect = new Rectangle(76, 206, 44, 44);

我做了:

Rectangle intersect = rectZR.intersection(rectCorrect);

如坐标所示,两个矩形实际上不相交,但Java仍然返回一个交点,intersect具有以下维度(x,y,宽度,高度):

513, 206, -393, -4

这是一个错误,还是我做错了什么?

1 个答案:

答案 0 :(得分:3)

关于交叉方法状态的

JavaDoc

  

计算此Rectangle与指定的交集   长方形。返回一个表示其交集的新Rectangle   两个矩形。 如果两个矩形不相交,则结果如此   将是一个空矩形

虽然整个类的JavaDoc指定:

  

宽度或高度为的矩形既没有位置也没有   沿着那些具有负尺寸的轴的尺寸。这样的矩形   在这些轴上被视为不存在。 这样的矩形也是   关于遏制计算和测试方法的空   如果它包含或相交一个点或矩形将始终返回   假。将这样的矩形与点或点组合的方法   矩形将在生成结果时完全忽略Rectangle。   如果两个Rectangle对象组合在一起,每个对象都有一个负数   维度,结果将至少有一个负维度。

因此,由两个负维度交叉创建的矩形实际上意味着没有交集。您可以使用intersects()方法检查:

boolean intersects = rectZR.intersects(rectCorrect);