我有两个矩形:
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
这是一个错误,还是我做错了什么?
答案 0 :(得分:3)
计算此Rectangle与指定的交集 长方形。返回一个表示其交集的新Rectangle 两个矩形。 如果两个矩形不相交,则结果如此 将是一个空矩形。
虽然整个类的JavaDoc指定:
宽度或高度为负的矩形既没有位置也没有 沿着那些具有负尺寸的轴的尺寸。这样的矩形 在这些轴上被视为不存在。 这样的矩形也是 关于遏制计算和测试方法的空 如果它包含或相交一个点或矩形将始终返回 假。将这样的矩形与点或点组合的方法 矩形将在生成结果时完全忽略Rectangle。 如果两个Rectangle对象组合在一起,每个对象都有一个负数 维度,结果将至少有一个负维度。
因此,由两个负维度交叉创建的矩形实际上意味着没有交集。您可以使用intersects()
方法检查:
boolean intersects = rectZR.intersects(rectCorrect);