与 Java AWT 的矩形交集

Posted

技术标签:

【中文标题】与 Java AWT 的矩形交集【英文标题】:Rectangle intersections with Java AWT 【发布时间】:2020-10-09 21:19:20 【问题描述】:

我有两个矩形,我想弄清楚它们在哪一边相交。我可以使用Rectangle.intersects(Rectangle),但它只告诉我矩形是相交的。我要做的是检查矩形是否在 x 或 y 轴上相交,但我不知道该怎么做。

【问题讨论】:

您知道如何判断图表上的一个点相对于另一个点的位置吗?例如。通过将 x1 与 x2 以及 y1 与 y2 进行比较。你可以对矩形做同样的事情。当然,如果它们完全重叠,您将不知道进入哪一侧(假设它们彼此靠近)。 @WJS 这是我第一次使用堆栈溢出,我不确定如何回应答案。您的意思是像距离公式一样,并检查与角的距离是否为 0 或更小,并返回它是哪个角的枚举值? 【参考方案1】:

我建议只使用一些基本的数学来确定矩形相交的位置。

一个矩形有一个位置(左上角)和一个宽度和一个高度。

R1(10,20)R2(40,50)。由于R1 位于R2 的左侧和上方,因此这意味着如果R2R1 相交,则R2 必须与R1 的右侧和/或下方相交。 但是如果R2没有R1那么宽,它可能只在R1的底部相交。 或者如果R2没有R1那么高,它可能只在R1的右边相交。 R1R2 也有可能完全重叠。

因此,您需要结合矩形的位置和大小来确定矩形相交的确切位置。

最好的办法是尝试在纸上解决这个问题。然后编写您的代码,如果您有任何问题,请发布它,有人会提供帮助。发布答案时,只需编辑原始帖子并进行更改即可。

【讨论】:

以上是关于与 Java AWT 的矩形交集的主要内容,如果未能解决你的问题,请参考以下文章

一道算法题-求三个矩形的交集矩形。

MFC-IntersectRect获得两个矩形的交集部分

Java里面如何求两个集合的交集

java求交集和并集

如何计算交并比IoU | 含图片说明和伪代码实现

两个已排序List求交集