Траектория снаряда встречает движущийся объект (2D) - PullRequest
5 голосов
/ 17 апреля 2011

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

enter image description here

Это прекрасно работает.Однако моя цель движется, поэтому, если я стреляю по цели, а снаряду требуется несколько секунд, чтобы добраться до места назначения, цель давно исчезла.Положение цели х можно определить по времени.Допустим, что: 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 секунд, прежде чем я смогу стрелять из пушки.И я не хочу ждать, потому что цель убивает меня в это время.

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

Ответы [ 2 ]

3 голосов
/ 17 апреля 2011

Проблема недостаточно ограничена, что означает, что у вас будет выбор.Вы можете отслеживать цель в течение некоторого времени, и выбор времени стрельбы зависит от вас.

Если вы знаете траекторию цели и знаете, как поразить неподвижную цель, то вы можетевыберите , где вы хотите, чтобы воздействие произошло.Просто выберите точку на траектории (удобно далеко впереди цели) и прицельтесь туда.Тогда все, что вам нужно сделать, это решить, когда стрелять.Легко подсчитать, сколько времени понадобится пушечному ядру, чтобы достичь точки удара;легко вычислить, где будет находиться цель, за столько времени, пока она не достигнет точки удара;когда цель там , нажмите на курок.

0 голосов
/ 18 апреля 2011

Я подозреваю, что найти формулу будет довольно сложно. Однако ошибка в приведенной ниже итеративной схеме будет уменьшаться примерно на коэффициент v / V (v целевая скорость, V скорость снаряда) на каждом шаге.

начните с того, что время полета будет равно нулю

Повтор

рассчитать расстояние до цели (используя время полета)

рассчитать время полета с расстояния.

Пока два последовательных времени полета не будут достаточно близки

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