簡體   English   中英

檢查圓與圓扇形的周長之間是否存在碰撞

[英]Check for collision between a circle and the perimeter of a circle sector

我正在嘗試創建一個函數來檢查圓與圓扇形的周長之間是否存在碰撞/相交。

我將更詳細地說明我的問題:
1.我有一個由圓心(x1,y1),半徑(r1)和角度(m)定義的圓弧,告訴我圓弧的起點和終點。
2.另一方面,我有一個由中心點(x2,y2),半徑(r2)定義的圓。
3.我正在用HTML5畫布創建一個小游戲,其中這兩個幾何形狀都可以自由移動。
4.問題是我想知道這兩個(綠色圓圈部分和綠色圓圈)是否相互碰撞。

在此處輸入圖片說明

我當前的代碼非常基礎(因為我無法提出可以有效檢查沖突的內容)。 它僅檢查定義該圓扇形的圓與另一個圓之間的碰撞:

this.crashWith = function(otherobj) {
    // "this" is the circle
    // "otherobj" is the circle sector
    var dx = this.x - otherobj.x;
    var dy = this.y - otherobj.y;
    var distance = Math.sqrt(dx * dx + dy * dy);
    var crash = false;
    if (distance < this.radius +otherobj.radius) {
        crash = true;
    }
    return crash;
}

注意:圓扇形(綠色)具有線寬(如圖中所示),並且角度m發生變化(因為圓扇形圍繞中心旋轉)。

我認為正確的解決方案是知道圓扇形不變(只是旋轉)而可以計算碰撞的方法。

看起來您對幾何學有清晰的了解...
您已經在使用畢達哥拉斯確定圓是否碰撞。

要檢測正面碰撞,您需要在條件中包括角度,請參見下圖:

在此處輸入圖片說明

當角度c大於a且小於b您會遇到碰撞。

接下來將找出側面碰撞

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM