Pointyの答えは、初期軌道(軌道は方向と速度、またはベクトルの組み合わせと見なされる)が与えられた場合のオブジェクトの動きをシミュレートする方法の良い要約です。
しかし、あなたは質問で(私があなたを正しく読んだ場合)、原点と目的のターゲット点だけを知っている最初の軌道を決定したいと言いました。O
P
悪いニュースは、実際には、特定P
の場所からそこに到達する放物線軌道が無限にあることですO
。角度と速度は相互に依存しています。
Oが原点(つまり[0、0])になるようにすべてを変換すると、次のようになります。
T_x = P_x - O_x // the X distance to travel
T_y = P_y - O_y // the Y distance to travel
s_x = speed * cos(angle) // the X speed
s_y = speed * sin(angle) // the Y speed
次に、(x, y)
任意の時点での位置(t)
は次のとおりです。
x = s_x * t
y = s_y * t - 0.5 * g * (t ^ 2)
だからインパクトであなたは持っています
T_x = s_x * t
T_y = -0.5 * g * (t ^ 2) + s_y * t
しかし、3つの未知数(、、t
およびs_x
)s_y
と2つの連立方程式があります。それらの1つを修正すると、方程式を解くのに十分なはずです。
FWIW、修正s_x
またはは、またはのいずれかs_y
を修正することと同等です。そのビットは単純な三角法です。speed
angle
もちろん、いくつかの組み合わせは不可能です。速度が低すぎる場合や角度が高すぎる場合、発射体はターゲットに到達する前に地面に衝突します。
注意:これは、位置が継続的に評価されることを前提としています。Pointyの回答と、モーションをシミュレートする方法についての独自の説明によれば、時間が離散的な増分で経過したときに何が起こるかとは完全には一致しません。ただし、位置を十分に頻繁に(つまり、1秒間に数十回)再計算する場合は、十分に正確である必要があります。