2014-04-30 3 views
1

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

  • местоположения пересечения между моим снарядом обожженного и целями, или

  • времени, необходимое для моего снаряда пересекаться в цели

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

Рр = Tp + TV * т

Где Рр прогнозируемого положения, Тр является текущим выбранным положением, ТВ является целевой скоростью и t - время.

Я также знаю, что t = | Pp - Sp |/Bs

где Sp - это мое (исходное) положение, а Fs - скорость снаряда (пуля). Но я не могу найти способ решить эту проблему, чтобы получить либо Pp, либо t.

Может ли кто-нибудь просветить меня? Благодаря


Я нашел сайт с подробным описанием один метод, но это не кажется, что работает (http://howlingmoonsoftware.com/wordpress/leading-a-target/). Мой метод проверки, чтобы определить, работает ли он, заключается в использовании прогнозируемой позиции для определения времени достижения цели и достижения снаряда. Они должны быть очень похожими, но в моей игре они почти в 2 раза.

+0

Знаете ли вы, что ваш снаряд _will_ попал в цель? Что делать, если цель в два раза быстрее, чем ваша пуля? Что делать, если цель движется на север, а ваша пуля движется на юг? – Kevin

+1

Решена проблема: баллистика. Люди делают это со времен Второй мировой войны. Это итеративная физическая проблема, поэтому она не является тривиальной или закрытой формой. – duffymo

+0

@duffymo, я согласен с тем, что для баллистических проблем реального мира нет закрытого решения, но я думаю, что есть решение, если нет силы тяжести или сопротивления воздуха, что, кажется, имеет место здесь. – Kevin

ответ

0

Мне удалось решить это, используя правило косинуса и квадратичное уравнение одновременно с поиском другого решения в Интернете.

основано на правиле косинуса

с^2 = а^2 + B^2 -2ab.сов (С)

Мы знаем угол C, так как это угол между направлением мишеней, и наше относительное расположение от мишени

Мы знаем, б, как это расстояние между нами и мишенью

Мы знаем время * скорость цели

Мы знаем, с временем * скорость снаряда

это уменьшает вниз, чтобы получить квадратный

(projspeed^2 - targetvelocity^2) * т^2 + 2 * targetvelocity * distancefromtarget * соз (С) * т - distancefromtarget^2 = 0

это может быть решена с помощью квадратичной альтернативной формы:

т = 2с/(-b + SQRT (Ь^2 -4ac))

После того, как мы имеем т мы можем использовать PredictionPos = TargetPos + т * TargetVelocity

Чтобы проверить результат правильно, мы можем отработать время, когда цель достигает цели и снаряда для достижения цели - они должны быть равны

0

Я считаю, что квадратичное уравнение на самом деле равно t = (-b ± sqrt (b^2 - 4ac))/2a. Я бы добавил это в качестве комментария, но мне не хватает необходимой репутации.

 Смежные вопросы

  • Нет связанных вопросов^_^