我碰到了一个需要解决的数学问题,它是我完成应用程序所需的,所以我寻求帮助。
假设有2个(或更多,但基本上为2个)矩形,每个矩形有2个已知的点:左上角(x1, y1)和右下角(x2, y2) (如果需要解决问题,我可以用这些信息找出长度)。
有没有一种方法可以确定它们是否有交集,在区域中,我的意思是,如果任何一个矩形的任何部分位于另一个矩形的任何部分上?
我已经搜索并找到了一点帮助,但它并没有解决问题:
这两个矩形不相交的条件有4个:
1. 一个矩形的左边缘在另一个矩形的右边缘的右侧,意味着第一个矩形完全位于第二个矩形的右侧,没有交集。 2. 一个矩形的右边缘在另一个矩形的左边缘的左侧,意味着第一个矩形完全位于第二个矩形的左侧,没有交集。 3. 一个矩形的顶部边缘在另一个矩形的底部边缘下面,意味着第一个矩形完全位于第二个矩形的下方,没有交集。 4. 一个矩形的底部边缘在另一个矩形的顶部边缘之上,意味着第一个矩形完全位于第二个矩形的上方,没有交集。
所以我尝试反转条件,即如果上述四个条件中的4个不发生,矩形可能相交。但是我仍然可以找到两个矩形不满足任何条件的情况(如上图),并且仍然不相交。
非常感谢任何帮助,请向我展示它的方式或算法或代码(仅限JS和PHP)。
非常感谢! [x]
假设有2个(或更多,但基本上为2个)矩形,每个矩形有2个已知的点:左上角(x1, y1)和右下角(x2, y2) (如果需要解决问题,我可以用这些信息找出长度)。
TL(x1, y1)
+-----------------+
| |
| | TL(x3, y3)
| | +---------------------------+
+-----------------+ | |
BR(x2, y2) +---------------------------+
BR(x4, y4)
有没有一种方法可以确定它们是否有交集,在区域中,我的意思是,如果任何一个矩形的任何部分位于另一个矩形的任何部分上?
我已经搜索并找到了一点帮助,但它并没有解决问题:
这两个矩形不相交的条件有4个:
1. 一个矩形的左边缘在另一个矩形的右边缘的右侧,意味着第一个矩形完全位于第二个矩形的右侧,没有交集。 2. 一个矩形的右边缘在另一个矩形的左边缘的左侧,意味着第一个矩形完全位于第二个矩形的左侧,没有交集。 3. 一个矩形的顶部边缘在另一个矩形的底部边缘下面,意味着第一个矩形完全位于第二个矩形的下方,没有交集。 4. 一个矩形的底部边缘在另一个矩形的顶部边缘之上,意味着第一个矩形完全位于第二个矩形的上方,没有交集。
所以我尝试反转条件,即如果上述四个条件中的4个不发生,矩形可能相交。但是我仍然可以找到两个矩形不满足任何条件的情况(如上图),并且仍然不相交。
非常感谢任何帮助,请向我展示它的方式或算法或代码(仅限JS和PHP)。
非常感谢! [x]