Траектория попадания снаряда в движущийся объект (2D)

Я уже довольно давно искал математическое решение для моей пушки, стреляющей снарядом по движущейся цели с учетом силы тяжести. Я нашел решение для определения угла, под которым пушка должна стрелять, исходя из положения пушки, цели » положение s и начальная скорость. Формула описана здесь: http://en.wikipedia.org/wiki/Trajectory_of_a_projectile#Angle_.CE.B8_required_to_hit_coordinate_.28x.2Cy.29 .

enter image description here

Это отлично работает. Однако моя цель движется, поэтому, если я стреляю по цели, и снаряду требуется несколько секунд, чтобы добраться до места назначения, цель уже не будет. Положение цели по оси x можно определить по времени. Допустим, что: x = 1000 - (10 * t) , где t - время в секундах. Y можно описать как: y = t .

Проблема в том, что t зависит от угла, под которым пушка стреляет.

Поэтому мой вопрос: как я могу изменить формула, как описано в вики, чтобы она учитывала движущуюся цель?

Кроме того, Возможно, я искал неправильные слова здесь или в Google, но я не нашел никакого решения, описывающего именно эту проблему.

Заранее спасибо за ваше мозговое время!

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

В качестве ответа на ответ давайте взглянем на этот пример:

Пушка находится на {0, 0} и не движется. Стартовая скорость 100 м / с. Цель находится на {1000, 0} и движется со скоростью 10 м / с к пушке (v = -10 м / с).

Какой угол мне следует использовать, чтобы поразить движущуюся цель, когда я хочу стрелять в t = 0 (немедленно)?

Если я буду стрелять без учета скорости цели, я прицелюсь в {1000, 0}, и угол можно будет рассчитать по указанной формуле. Но он ужасно промахнется по цели, потому что она движется.

Как предложил Бета, я мог бы нацелиться, например, на {500, 0}, вычислить, сколько времени требуется, чтобы снаряд достиг этих координат (скажем, 5 секунд), и подождать пока цель не окажется в 5 секундах от {500, 0}, будучи {550, 0}. Но это означает, что мне нужно подождать 450 м или 45 секунд, прежде чем я смогу выстрелить из пушки. И я не хочу ждать, потому что цель тем временем убивает меня.

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

5
задан sdk 17 April 2011 в 20:22
поделиться