如果我有兩個使用兩個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