旋轉的矩形與圓的碰撞檢測

2021-10-04 03:34:46 字數 667 閱讀 7200

在2d平面中,圓與圓檢測是否發生碰撞很簡單,方法即為比較兩個圓心之間的距離與半徑之和。而矩形與圓則需要稍微複雜一點的計算。

不旋轉,意思是矩形的邊分別與兩個座標軸平行,矩形長平行於x軸,矩形寬平行於y軸。

下面是其碰撞檢測的具體邏輯:

參考這篇文章:怎樣判斷平面上乙個矩形和乙個圓形是否有重疊?

而對於旋轉的矩形,意思是矩形的邊與座標軸有一定夾角,設為θ。此時我們有個思路就是將矩形與座標軸對其,把問題轉為為不旋轉的矩形就可以得到決絕。

那麼我們是旋轉矩形還是圓呢?顯然我們會選擇旋轉圓,因為這樣簡單一些。這樣問題就描述成:圓心繞著矩形的中心旋轉θ,得到與座標軸對齊後的圓的新座標。

在這裡圓中心的初始座標為(xc, yc),矩形的初始座標為(xr, yr)。

新的圓的座標為(x』, y』),新的矩形與座標軸角度為0。

矩形與圓碰撞檢測

說下演算法思想。判斷三種情況。1.矩形四個頂點在圓內。2.判斷圓的內接正方形與矩形是否碰撞 3.判斷圓上的水平左右 豎直上下四個點是否在矩形內。其中1比較簡單,只需比較點到圓心距離與圓半徑即可。3也簡單,判斷點是否在矩形內的思想是,若點在矩形內,則任意選定矩形四個頂點中的乙個與該點連線,其他3點必不...

QGraphicsScene的碰撞檢測

實現效果如下 圖1 移動的item碰撞顯示 圖2 碰撞的item都顯示 使用scene的碰撞檢測函式 qlist qgraphicsitem collidingitems const qgraphicsitem item,qt itemselectionmode mode qt intersects...

Ogre中的碰撞檢測

基於射線查詢的方式,實現攝像機和地形的碰撞檢測,防止攝像機穿透地面,這也是ogre demo中terrian例子中的方法。首先定義 rayscenequery rayscenequery 0 在createscene時候,建立場景查詢 framerenderingqueued事件中,進行射線查詢,設...