如果我有两个矩形,其位置是使用两个2D矢量定义的(即左上角,右下角),我如何检查它们相交的点?
答案 0 :(得分:4)
我假设您实际上想要交叉的结果,而不仅仅是两个矩形相交的测试。
rect1 =(l1,t1,r1,b1)和rect2 =(l2,t2,r2,b2)的交点也是一个矩形:
rectIntersection = ( max(l1, l2), max(t1, t2), min(r1, r2), min(b1, b2) )
rectIntersection当然是空的,如果left >= right || top >= bottom
假设一个矩形是左/顶 - 包含和右/底 - 独占。
如果
,矩形相交l1 < r2 && l2<r1 && t1<b2 && t2<t1
答案 1 :(得分:2)
假设原点位于屏幕的left-top
。
如果检查一个矩形(x3,y3)
的左上角是否小于另一个矩形(x2,y2)
的右下角,则两个矩形相交。
积分为(x2,|y2-y3|)
和(|x2-x3|,y2)
。
这是针对rectangle1右侧的rectangle1和reactangle2。
对左翻译应用反向。
答案 2 :(得分:1)
两个矩形重叠是至少有一个内部点X,Y两者共有。让第一个rectable为{T1, L1, B1, R1}
,第二个为{T2, L2, B2, R2}
(top,left,bottom,right)。现在它遵循(X>L1)
和(X<R1)
以及(Y>T1)
和(Y<B1)
,类似于矩形2.从(X>L1)
和(X<R2)
开始,{ {1}}。同样,(L1<R2)
,(L2<R1)
和(T1<B2)
。
这四个条件因此是必要的。直接显而易见的是它们也足够了,但情况也是如此。
答案 3 :(得分:0)
如果您对功能更感兴趣,而不是实现算法,
在Windows上查看IntersectRect Function。