[英]Java AWT Rectangle intersection
我有两个矩形:
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,width,height):
513, 206, -393, -4
这是一个错误,还是我做错了什么?
相交方法上的JavaDoc说明:
计算此Rectangle与指定Rectangle的交集。 返回一个新的Rectangle,表示两个矩形的交集。 如果两个矩形不相交,则结果将为空矩形 。
虽然整个类的JavaDoc指定:
宽度或高度为负的矩形沿着具有负尺寸的轴既没有位置也没有尺寸。 这样的矩形沿着这些轴被视为不存在。 对于包含计算和方法来说, 这样的Rectangle也是空的 ,测试它是否包含或交叉点或矩形将始终返回false。 将这样的Rectangle与点或矩形组合在一起的方法将在生成结果时完全忽略Rectangle。 如果组合了两个Rectangle对象并且每个对象都具有负维度,则结果将至少具有一个负维度。
因此,由两个负维度交叉创建的矩形实际上意味着没有交集。 您可以使用intersects()
方法检查:
boolean intersects = rectZR.intersects(rectCorrect);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.