【物理】物理AABB衝突検出

AABBとは何ですか?

AABBは、を意味軸整列バウンディングボックス(軸平行境界ボックス)。3D空間で、AABBは、直方体である2次元空間における矩形です。回転オブジェクトは、オブジェクトがAABBの回転、したがって特性に変更されない場合、通常の表面は軸に対して平行であることを特徴、すなわち、AABBは、最速の2つのオブジェクトが重なるか否かを判断します。

AABB式

「リアルタイム衝突検出アルゴリズム技術」、ちょうど最も効率的に名前を付けるために、AABB式の3種類に言及し、ストレージスペースの最小値を必要とする - すなわち、境界ボックスの中央の位置と保存された半径バウンディングボックス(すなわち、囲まれましたバウンディングボックスの長さの距離の中央にボックスのエッジ):

struct AABB {
    Vector3 pos;
    Vector3 r;
}


間AABB衝突検出

次のようにするかどうかAABBの交点をプロットすることができます。

前記rは半径であり、Dは、境界ボックスの2つの中心間の距離です。

int AABBIntersection(AABB A, AABB B) {
    for(int i=0, i<3, i++){
        if(abs(A.pos-B.pos)>A.r+B.r)   return 0;
    }
    return 1;
}


衝突検出と線AABB

ゲームでは、多くの場合、オブジェクトは、問題のポイントからの光線と交差するかどうかを検出するために、そこに必要になります。
AABBは同様であるが、ここで放射線AABBが置換特定ロジックとの間の衝突検出。次のように線構造は次のようになります。

struct Ray {
    Vector3 pos;
    Vector3 direction;
}

AABB衝突検出と線式:

int RayAABBIntersection(Ray R, AABB A) {
    

}


おすすめ

転載: www.cnblogs.com/liez/p/11965027.html