Я предполагаю, что вы хотите, чтобы мяч попал в определенную точку (200 200) на вершине своего пути. Ну, моя физика немного ржавая, но это то, что я собрал вместе:
v_y = square_root(2*g*y)
* * 1004
где g - положительное число, отражающее ускорение под действием силы тяжести, а y - насколько высоко вы хотите подняться (в данном случае 200).
v_x = (x*g) / v_y
где x - это то, как далеко в направлении x вы хотите пройти (в данном случае 200), g - как и раньше, а Vy - ответ, который мы получили в предыдущем уравнении.
Эти уравнения устраняют необходимость в угле. Однако, если вы предпочитаете скорость + угол, все просто:
v0 = square_root(v_x^2 + v_y^2)
и
angle = arctan(v_y / v_x)
.
Вот вывод, если вам интересно:
(1/2)at^2 + v_yt + 0 = y
(1/2)at^2 + v_yt - y = 0
по квадратной формуле,
t = (-v_y +/- square_root(v_y^2 - 2ay)) / a
у нас также есть другое уравнение, потому что на вершине вертикальная скорость равна 0:
0 = v_y + at
заменить:
0 = v_y + (-v_y +/- square_root(v_y^2 - 2ay))
0 = square_root(v_y^2 - 2ay)
0 = v_y^2 - 2ay
v_y = square_root(-2ay)
или
v_y = square_root(2gy)
Для v_x:
v_x*t = x
ранее, t = v_y / a, поэтому
v_x = (x*g)/v_y
Надеюсь, это имело смысл.