特定の座標に当たるために発射物を発射するのに必要な角度を計算しようとしています。仰角の異なる(0,0)以外の位置から座標(x、y)を打つのに必要な角度を計算する
私の発射体はランダムな座標にあり、ターゲットは静的な座標にあります。
Iは、(0,0)から(X、Y)の座標をヒットするために必要な角度を計算するためにウィキペディアに以下の式を横切って実行終わっ:
Iは、いくつかの試みを行っていますこれと他の数式を理解し、次の実装を試みました(私はC#とXNAを使用しています)。
double y = source.Y - target.Y;
double x = Vector2.Distance(source, target);
double v = 1440; //velocity
double g = 25; //gravity
double sqrt = (v*v*v*v) - (g*(g*(x*x) + 2*y*(v*v)));
sqrt = Math.Sqrt(sqrt);
double angleInRadians = Math.Atan(((v*v) + sqrt)/(g*x));
また、vとgの値が同じままである同一の角度が得られる以下のことも試みた。
double targetX = target.X - source.X;
double targetY = -(target.Y - source.Y);
double r1 = Math.Sqrt((v*v*v*v) - g*(g*(target.X*target.X) + ((2*target.Y)*(v*v))));
double a1 = ((v*v) + r1)/(g*target.X);
angleInRadians = -Math.Atan(a1);
if (targetX < 0)
{
angleInRadians -= 180/180*Math.PI;
}
私の推測も、私の(仮定)で、私はまだ未(0,0)、ソースと異なる高度での座標に対して正しく計算を行うわけではないことを、ソース座標ゼロにしようとしていることです。
以下は私の座標系を表す画像です。これはXNAのデフォルトです。
私はあなたが(0,0)に、あなたの実際の位置を翻訳すべきだと思うベースのシステムで、そこに機能を実行し、(0,0から、最終的な変換を実行)実際のシステムに...重力以外の要因がないと仮定した場合、計算された角度はどのソースからも同じでなければなりません。 –
発射経路に影響を与える他のパラメータ(入力)は何ですか?または他にどのような変数がありますか? –
重力は負ではないと思われますか?私が正しく思い出すと-9.8m/sです。 –