在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事件中,進行射線查詢,設...