与 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
的左侧和上方,因此这意味着如果R2
与R1
相交,则R2
必须与R1
的右侧和/或下方相交。
但是如果R2
没有R1
那么宽,它可能只在R1
的底部相交。
或者如果R2
没有R1
那么高,它可能只在R1
的右边相交。
R1
和 R2
也有可能完全重叠。
因此,您需要结合矩形的位置和大小来确定矩形相交的确切位置。
最好的办法是尝试在纸上解决这个问题。然后编写您的代码,如果您有任何问题,请发布它,有人会提供帮助。发布答案时,只需编辑原始帖子并进行更改即可。
【讨论】:
以上是关于与 Java AWT 的矩形交集的主要内容,如果未能解决你的问题,请参考以下文章