投稿者 tel | 2011年3月25日

斜方投射で目標位置に投げる

斜方投射で目標位置に投げるための角度を求める。

初速は一定で投げる角度を変える。ゲームでロックオンしている対象に向かってものを投げるときとかに使うかもしれない。有効な角度が2つ出てくる場合があるので角度が水平から浅いほうをとることにする。斜方投射の式はxyの各成分で以下のようになる。

この式からtを消して角度を求める。

上記の式を解の公式を使って解いてアークタンジェントで角度を出す。判別式が負数になる場合は判別式の部分を0にした。またタンジェントの範囲が-90度から90度までしか求めれないためxが負の方向に向かって投げる場合はπだけ足す必要がある。

var v0 = 9.0;
var a = g * x * x / (2.0 * v0 * v0);
var b = -x;
var c = y + a;
var d = b * b - 4.0 * a * c;
if(d < 0.0) d = 0.0;
d = Math.sqrt(d);
var t0 = (-b + d) / (2.0 * a);
var t1 = (-b - d) / (2.0 * a);
var rad0 = Math.atan(t0);
var rad1 = Math.atan(t1) + Math.PI;
var rad = x > 0 ? rad0 : rad1;
v.x = v0 * Math.cos(rad);
v.y = -v0 * Math.sin(rad);

今回Google Docsの数式エディタで数式を書いて貼り付けてみたけどなかなか便利。

と思っていたけど、うまく画像が表示されないので保存してから貼り付けた。直接URL指定してはいけないのかもしれない。


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。