說下演算法思想。
判斷三種情況。
1. 矩形四個頂點在圓內。
2. 判斷圓的內接正方形與矩形是否碰撞
3. 判斷圓上的水平左右、豎直上下四個點是否在矩形內。
其中1比較簡單,只需比較點到圓心距離與圓半徑即可。3也簡單,判斷點是否在矩形內的思想是,若點在矩形內,則任意選定矩形四個頂點中的乙個與該點連線,其他3點必不同時在連線同側。 2有點棘手,分別判斷矩形的四個頂點是否在正方形內以及正方形的四個頂點是否在矩形內。但是可能存在下面這種情況。
如果是這種情況的話,矩形的四個頂點必有至少乙個在圓內。所以即使在這種情況下沒能檢測到圓的內接正方形與矩形碰撞,但會在情況1會檢測出來。 因此只要通過上述三種碰撞檢測,就能保證沒有漏掉任何情況。
旋轉的矩形與圓的碰撞檢測
在2d平面中,圓與圓檢測是否發生碰撞很簡單,方法即為比較兩個圓心之間的距離與半徑之和。而矩形與圓則需要稍微複雜一點的計算。不旋轉,意思是矩形的邊分別與兩個座標軸平行,矩形長平行於x軸,矩形寬平行於y軸。下面是其碰撞檢測的具體邏輯 參考這篇文章 怎樣判斷平面上乙個矩形和乙個圓形是否有重疊?而對於旋轉的...
碰撞檢測 膠囊體碰撞檢測
膠囊體 給定一條線段l,所有道l的距離為r的點的集合。由定義可知,膠囊體由半徑r和線段l標識。檢測兩個膠囊體是否發生碰撞,即檢測兩條線段l1 l2的最短距離d是否大於l1 l2的半徑r1 r2之和,d r1 r2 則未碰撞,否則發生碰撞。設線段l1端點為a1 a2,線段l2端點為b1 b2,號表示兩...
Unity碰撞檢測
碰撞個必要條件為兩個角色必須都掛載 rigibody 剛體元件,至少乙個角色掛載 collider指令碼 第一種 觸發器,必須開啟 collider的 istrigger 為 true 兩個碰撞物件會相互穿過 void ontriggerenter collider collider 開始觸發器 v...