如果我有两个使用两个2D矢量(即左上角,右下角)确定位置的矩形,我该如何检查它们相交的点?检查两个矩形之间的交点?
3
A
回答
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
2
假设原点位于屏幕的left-top
。
如果检查一个矩形(x3,y3)
的左上角是否小于另一个矩形(x2,y2)
的右下角,则两者相交。
积分是(x2,|y2-y3|)
和(|x2-x3|,y2)
。
这是矩形1右边的rectangle1和reactangle2。
将反转应用于左侧翻译。
1
两个矩形重叠是至少有一个共同的两个内部点X,Y.让第一个可交替的是{T1, L1, B1, R1}
和第二个{T2, L2, B2, R2}
(顶部,左侧,底部,右侧)。现在接着是(X>L1)
和(X<R1)
和(Y>T1)
和(Y<B1)
,并且类似地对于矩形2.从(X>L1)
和(X<R2)
得出(L1<R2)
。同样,(L2<R1)
,(T1<B2)
和(T2<B1)
。
这4个条件是必要的。这并不是直接显而易见的,它们也是足够的,但情况也是如此。
0
如果您有兴趣更多的功能,在Windows上做的工作,而不是实现一个算法,
退房IntersectRect Function。
相关问题
- 1. 线与矩形之间的交点
- 2. 检测两个正方形/矩形之间的重叠JAVA
- 3. 如何查找直线和矩形之间的交点?
- 4. 两个矩形之间的距离
- 5. 两个矩形之间的差异(XOR),如矩形?
- 6. 两个矩形之间的碰撞检测
- 7. 两个旋转矩形之间的java碰撞检测
- 8. 查找两列之间的交点
- 9. R中两个矩阵之间的元素交点
- 10. 检查两个矩形是否重叠
- 11. 圆和轴对齐的矩形之间的交点
- 12. 矩形之间的碰撞检测libgdx
- 13. javascript中两点之间的矩形坐标
- 14. 两点之间的矩形对角线渐变画笔
- 15. Java矩形的交点
- 16. 矩形的交叉点java
- 17. 矩形的交点问题
- 18. 检查两个表之间的约束
- 19. 如果matlab中两个矩形的交点为零
- 20. 通过长方形上两点之间的矩形的边界循环?
- 21. 如何在matlab中的两个矩阵之间进行单点交叉
- 22. 如何找到两个图像之间的差异矩形
- 23. C - 计算两个矩形之间的面积
- 24. 删除CSS中两个矩形之间的空白
- 25. Java:帮助确定两个矩形之间的碰撞
- 26. 计算x/y网格上两个矩形之间的重叠?
- 27. XNA矩形交叉点
- 28. 我如何检测2个矩形之间的碰撞? LIBGDX
- 29. 查找两个形状之间的仿射变换矩阵(SVG路径)
- 30. 从不在矩形中间的点以角度查找矩形边界点
分离轴版本更有效率,这个版本意味着你将永远需要做四个比较。 – 2009-12-04 10:24:56
+您必须至少执行一次额外的测试才能查看生成的矩形是否为空。这意味着这个版本是5-6个条件,而SAT版本是1-4。 – 2009-12-04 10:26:21
我确实认为海报实际上是想要得到的一组相交点,而不是只有在相交时才进行测试。根据上下文,计算交叉点并声明它不为空可能更好。 – Sebastian 2009-12-04 10:40:35