偏差射撃の実装について
目標
自機が移動する的に当たる弾を発射するために、適切な発射方向を計算する。
定義
太字の英数字はベクトルe.g.$a$.
位置AとBがあったとき、ABはAからBへのベクトル。
|a|はベクトルaの長さ。
設定
自機と的がある。
自機は原点Oから弾速sの弾を発射し、 的は位置Lから速度vで移動する。 l:=|OL|, θ:=直線OLとvの成す角度(0≤θ≤180[deg]).
結果
弾を発射してから着弾するまでの時間tについて、 t=l±s√1−(|v|ssinθ)2−|v|cosθ. となる。
t≥0のとき、弾が命中するときの的の位置はL+vtであり、そこに向けて弾を撃てば命中する。
tが求められない場合やtが負である場合、どの方向に弾を撃っても的に当たらない。
計算
弾が発射され、時間t後に的に当たるときの位置をPとする。
このとき、 |OP|=st,|LP|=|v|t.
OL⊥PQとなり、線分OL上にある位置Qを設定する。 ∠POQの角度をθ′とする。
O,Q,Lは直線状にあるので、 |OQ+LQ|=|OL| <=>stcosθ′−|v|tcosθ=l.
また、 |PQ|=stsinθ′=|v|tsinθ <=>1−cos2θ′=(|v|ssinθ)2 <=>cosθ′=±√1−(|v|ssinθ)2.
上の2式より、 t=l±s√1−(|v|ssinθ)2−|v|cosθ.
t≥0のとき、弾が命中するときの的の位置はL+vtであり、そこに向けて弾を撃てば命中する。
tが求められない場合やtが負である場合、どの方向に弾を撃っても的に当たらない。
comments powered by Disqus