衝突判定
衝突判定(しょうとつはんてい、Collision Detection)とは、「2つ以上のオブジェクトの交差を検出する」という計算機科学上の問題であり、具体的には「ある物体が別の物体に当たったか(衝突したか)どうか」を判定するプログラム処理のことを指す。ロボット工学、計算物理学、コンピュータゲーム、コンピュータシミュレーション、計算幾何学など、さまざまなコンピューティング分野で応用されている。
衝突判定のアルゴリズムは、2Dオブジェクト同士の衝突判定と3Dオブジェクト同士の衝突判定に分けることができる。
Using a root finder on these sixty functions produces the exact collision times for the two given triangles and the two given trajectory. We note here that if the trajectories of the vertices are assumed to be linear polynomials in t {\displaystyle t} then the final sixty functions are in fact cubic polynomials, and in this exceptional case, it is possible to locate the exact collision time using the formula for the roots of the cubic. Some numerical analysts suggest that using the formula for the roots of the cubic is not as numerically stable as using a root finder for polynomials.
このような場合はヒットボックス方式より単純な実装である「軸並行境界ボックス方式(Axis-Aligned Bounding Box、AABB方式)」を使うのが適している。しかしプレーヤー目線では、これらの実装方式を区別せず、どちらも単に「ヒットボックス」と言う場合も多い。
ヒットボックスとよく似た概念としてハートボックス(hurtbox)と言うものも存在する。「ダメージを受ける衝突判定」と「ダメージを与える衝突判定」を使い分ける必要がある場合、前者を「ヒットボックス(あたり判定)」と呼び、後者を「ハートボックス(攻撃判定)」と呼ぶ。たとえば、攻め側のパンチのヒットボックスが相手側のハートボックスと衝突した場合は攻撃が「通った」と判定されるが、相手側のヒットボックスと衝突した場合は「相打ち」または「打撃キャンセル」と判定されたい、というような場合に使われる。ハートボックス同士が衝突しても何も起きない。なお、この用語は業界全体で標準化されておらず、「ヒットボックス」と「ハートボックス」の定義がこれと逆になっているゲームもあり、またどちらも単に「ヒットボックス」と呼ぶゲームもある。
So for each list, we will have an n × n {\displaystyle n\times n} matrix M = ( m i j ) {\displaystyle M=(m_{ij})} of zeroes and ones: m i j {\displaystyle m_{ij}} is 1 if intervals i {\displaystyle i} and j {\displaystyle j} intersect, and 0 if they do not intersect.
By our assumption, the matrix M {\displaystyle M} associated to a list of intervals will remain essentially unchanged from one time step to the next. To exploit this, the list of intervals is actually maintained as a list of labeled endpoints. Each element of the list has the coordinate of an endpoint of an interval, as well as a unique integer identifying that interval.
↑ Collision Detection for Deformable Objects. doi:10.1111/j.1467-8659.2005.00829.x. https://hal.inria.fr/inria-00394479/document.
↑ Lin, Ming C (1993). Efficient Collision Detection for Animation and Robotics (thesis). University of California, Berkeley. https://wwwx.cs.unc.edu/~geom/papers/documents/dissertations/lin93.pdf.
↑ Caldwell, Douglas R. (2005-08-29). Unlocking the Mysteries of the Bounding Box. US Army Engineer Research & Development Center, Topographic Engineering Center, Research Division, Information Generation and Management Branch. オリジナルの2012-07-28時点におけるアーカイブ。. https://web.archive.org/web/20120728180104/http://www.stonybrook.edu/libmap/coordinates/seriesa/no2/a2.htm 2014年5月13日閲覧。.