угол для конкретной координаты в пути снаряда? - PullRequest
0 голосов
/ 02 февраля 2010

У меня есть координата xy (200, 200). Я знаю, как рассчитать угол от начала броска мяча. Как я могу найти начальную скорость для достижения этой конкретной координаты XY, когда мяч брошен в 2-й среде?

Я использую

 x = v0cosq0t;
 y = v0sinq0t - (1/2)gt2.

но нужно время. Без времени я могу это сделать? любая помощь, пожалуйста?

Ответы [ 2 ]

1 голос
/ 02 февраля 2010

Я предполагаю, что вы хотите, чтобы мяч попал в определенную точку (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

Надеюсь, это имело смысл.

0 голосов
/ 02 февраля 2010

Я уверен, что вы можете предположить, что изменение скорости происходит мгновенно. В игровой физике всегда есть какие-то «изворотливые» части, потому что это слишком дорого в вычислительном отношении или недостаточно важно, чтобы получать информацию о низкой детализации.

Вы можете запустить задание скорости мгновенно, а затем использовать класс таймера для измерения времени между каждым кадром (очень грубый способ сделать это), или вы можете настроить класс таймера в цикле обновления, который будет обновлять физика каждые х секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...