OpenGL衝突


簡単な条件で、オブジェクトが他のオブジェクトと接触するとき、衝突は起こります.OpenGLは、フレームレートを維持するシーンで発生する衝突を検出するために様々な衝突検出技術を使用します.最も原始的なものは、円、長方形、および点のような単純な形で、オブジェクトまたはオブジェクトの一部を近似することである.

近似技法


これは、円の内側のオブジェクトを近似する例です.あなたの左側には、2つの完全な多角形の円に近似し、右には、多角形の部分を参照することができます小さな円のセットに近似を参照してくださいすることができます.
ニック・ボビルズ


完全対象
オブジェクトの一部
つの円が接触したり、重なったりすると、衝突が起こる.しかし,近似手法には一つの問題がある.単純な形状に近似した後、衝突形状が互いに接触するか、または互いに重なるときに衝突が生じる.上記の画像で見ることができるように、実際の多角形が衝突していなくても、境界円は重なり衝突する.

衝突タイプ


壁(壁-オブジェクト)との衝突
  • オブジェクト-オブジェクト衝突
  • 円-円
  • 長方形
  • 長方形-長方形
  • 円-長方形
  • オブジェクト-ポイント衝突
  • 円-ポイント
  • 長方形-点
  • 円衝突


    円と円の衝突を検出するために円円衝突アルゴリズムを使用する.
    R 1とR 2の半径でそれぞれ2つの円を想像してください.

    円の2つの中心点間の距離をDとすると、D=R 1+R 2のとき、2つの円は互いに接触する.d<r 1+r 2のときは重なる.

    円円衝突アルゴリズムは次のように定義できます.
    A collision of two circles happen when Radius 1 + Radius 2 > = Distance.
    

    AABB衝突


    AABBは「軸に整列した境界ボックス」を表します.これは、シーンのベース軸に整列した長方形の形状を意味する.2 Dシーンを使用している場合、ベース軸はxとyである.
    下には円形のオブジェクトの例があります.

    イメージを学ぶ
    衝突を検出するときはx軸とy軸の両方を考慮する必要がある.次の2つのababbsを考えてください.

    Xの範囲とYの範囲を計算することができます.
    いずれかの軸上での範囲が崩れると衝突が起こる.

    イメージ:Mozilla MDN
    上の画像では、Xの範囲が重なっていることがわかります.したがって衝突が起こる.y軸も同様です.
    ここでは衝突,円円衝突,aabb衝突に関する基本的な事柄を論じた.それがこのブログのためです.ご質問やご意見がある場合は、以下のコメントをお気軽に!ハッピーコーディング!