円弧の衝突は通常の衝突よりも少し難しくなりますが、ブール代数を使用すると、特定の点が円弧の内側にあるかどうかを簡単に確認できます。
次の写真を見てください。
ここには 3 つのオブジェクトがあります。黒い球、これはアークを視覚化します。何かが衝突すると、アークの内側にある可能性があります。黒い球体の上にある赤い球体は、弧の「内側」を視覚化します。何かが赤い球体の内側にある場合、それは間違いなく弧の「内側」ではありません。円弧の「カットオフ」を視覚化する緑色の三角形もあります。緑色の三角形の内側にあるものは、円弧に含まれていないことは間違いありません。
何かが黒い球の中にあるかどうかをテストするのは簡単です。(球の中心までのオブジェクトの距離 <= 球の半径)。赤球も同様。緑色の三角形は少しトリッキーです。最初にこれを作成する必要があります。円弧の開始ラジアンと終了ラジアンを見つけます。開始ラジアンで単位ベクトルを回転させます。次に、単位ベクトルを end ラジアンだけ回転します。これら両方のベクトルを 2 * 黒い球の半径だけ長くします。次に、円弧の中心点と、中心位置を三角形の 3 点として追加した 2 つのベクトルの位置を使用します。次に、点と三角形の衝突ソルバーの 1 つを使用できます: http://www.bing.com/search?q=point+triangle+collision&go=&form=QBLH&scope=web
したがって、覚えておいてください: アークとの衝突 = (黒い球体との衝突) && !(赤い球体との衝突) && !(緑の三角形との衝突)。
