Processing math: 100%

偏差射撃アルゴリズム

偏差射撃の実装について

目標

自機が移動する的に当たる弾を発射するために、適切な発射方向を計算する。

定義

太字の英数字はベクトルe.g.$a$.

位置ABがあったとき、ABAからBへのベクトル。

|a|はベクトルaの長さ。

設定

自機と的がある。

自機は原点Oから弾速sの弾を発射し、 的は位置Lから速度vで移動する。 l:=|OL|, θ:=直線OLvの成す角度(0θ180[deg]).

結果

弾を発射してから着弾するまでの時間tについて、 t=l±s1(|v|ssinθ)2|v|cosθ. となる。

t0のとき、弾が命中するときの的の位置はL+vtであり、そこに向けて弾を撃てば命中する。

tが求められない場合やtが負である場合、どの方向に弾を撃っても的に当たらない。

計算

弾が発射され、時間t後に的に当たるときの位置をPとする。

このとき、 |OP|=st,|LP|=|v|t.

OLPQとなり、線分OL上にある位置Qを設定する。 POQの角度をθとする。

O,Q,Lは直線状にあるので、 |OQ+LQ|=|OL| <=>stcosθ|v|tcosθ=l.

また、 |PQ|=stsinθ=|v|tsinθ <=>1cos2θ=(|v|ssinθ)2 <=>cosθ=±1(|v|ssinθ)2.

上の2式より、 t=l±s1(|v|ssinθ)2|v|cosθ.

t0のとき、弾が命中するときの的の位置はL+vtであり、そこに向けて弾を撃てば命中する。

tが求められない場合やtが負である場合、どの方向に弾を撃っても的に当たらない。

 
comments powered by Disqus