遊戲開發中的數學和物理算法(6):圓和球的碰撞檢測

1.圓的碰撞檢測

圓的碰撞條件:
當兩個圓相切或者相交時,我們認爲兩個圓應該開始發生碰撞。


數學表示:


計算機中的實現:

兩圓之間的碰撞:

bool CollisionBetweenCircles(circle c1,circle c2)
{
    bool hit;
    float distanceOfCenter=sqrt(pow((c1.center.x-c2.center.x),2)+
                                pow((c1.center.y-c2.center.y),2));
    float distanceOfRadius=c1.radius+c2.radius;
    if(distanceOfCenter<=distanceOfRadius)
    {
        hit=true;
    }
    else
    {
        hit=false;
    }
    return hit;
}

2.球的碰撞

球的碰撞條件:
當兩個球相切或者相交時,我們認爲兩個球應該開始發生碰撞。

數學表示:


計算機中的實現:

兩球之間的碰撞:

bool CollisionBetweenSphere(sphere s1,sphere s2)
{
    bool hit;
    float distanceOfCenter=sqrt(pow((s1.center.x-s2.center.x),2)+
                                pow((s1.center.y-s2.center.y),2)+
                                pow((s1.center.z-s2.center.z),2));
    float distanceOfRadius=s1.radius+s2.radius;
    if(distanceOfCenter<=distanceOfRadius)
    {
        hit=true;
    }
    else
    {
        hit=false;
    }
    return hit;
}


發佈了7 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章