Точность против формулы расстояния


8

Рассмотрим стрелка и цель. У меня вопрос: есть ли реалистичное приближение к вычислению вероятности попадания стрелка в цель?

Пренебрегая оружием и навыком стрелка, я предполагаю, что первое приближение должно быть таким, что вероятность попадания будет пропорциональна 1 / r ^ 2, где r - расстояние до цели.

Мотивация к этому отношению исходит из использования идеи, что площадь сферы, центрированной на стрелке, уменьшается как r ^ 2. Таким образом, вероятность поражения цели в худшем случае должна уменьшиться до 1 / r ^ 2.

Я пытался найти какое-нибудь отношение к любому оружию, но не нашел ...

Кто-нибудь знает больше информации по этой теме? Это приближение верно?

РЕДАКТИРОВАТЬ:

Больше на вопрос: я рассматриваю тактическую игру. В частности, я хотел бы смоделировать стрельбу между двумя юнитами (поэтому, не FPS-игра, игрок не целится, он издает приказы). Для этого я считаю, что у подразделения есть некоторый опыт, у оружия есть некоторая точность, а окружающая среда (туман, растительность и т. Д.) Влияет на общую точность. Прежде чем работать с какой-то сложной моделью, самая простая модель для тестирования учитывает все факторы постоянными, а точность зависит только от расстояния.

Вопрос в том, как эта точность зависит от расстояния. Моим первым предположением будет 1 / r ^ 2 -распад. Но, как уже упоминалось в комментариях, это выглядит как очень быстрое затухание.


1
1 / r ^ 2 быстро падает . Похоже, большинство FPS изменяют вашу точку прицеливания под прямым углом и отслеживают луч. Чем больше угол, тем труднее поражать удаленные цели.
Даниэль Блезек,

1
Возможно, вы можете использовать закон Inverse Square, чтобы придумать закон ?
MichaelHouse

Закон обратной площади - это то, что я говорю в посте ... это 1 / r ^ 2 ... -.-
Хорхе Лейтао

Конечно. Должно быть, поэтому я подумал об этом. Но вам не хватает 4π, и вы просто используете 1 для P. Вы можете по существу использовать интенсивность из этого уравнения, чтобы приравнять к точности.
MichaelHouse

1
Я не думаю, что его игровой дизайн актуален, так как он просит «реалистичного приближения» и «пренебрежения оружием и навыком стрелка». С этими ограничениями это кажется основной математической проблемой.
Kylotan

Ответы:


5

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

Gajet уже привел ряд веских причин, почему некоторые из этих допущений не совпадают, но придерживается той же модели неточности: ограниченная ошибка в угле. Результат все еще падает с r ^ -2, но с небольшой константой.

Скажем, у стрелка максимальный разброс 5 °. У него есть шанс стрельбы между ошибками 0 ° и 1 °, но площадь кольца между 4 ° и 5 ° намного больше, чем площадь кольца / круга между 0 ° и 1 °. Большие ошибки имеют большую вероятность возникновения. Увеличьте ошибку еще больше, и вероятность внезапно упадет до нуля, потому что мы вышли за пределы пяти градусов. Это не кажется очень реалистичным.

Более точное представление будет иметь Guassian распределения угловой погрешности, то есть: A(ϕ) = sqrt(a/π) exp(-a ϕ²). Переменная a может использоваться для включения навыка стрелка и т. Д. Обратите внимание, что это решение одномерное. Если ваша цель очень высокая по сравнению с ее шириной, вы можете вообще пропустить вертикальную ошибку и просто предположить, что выстрел попал на правильную высоту. Кроме того, вы можете выполнить вычисление дважды и умножить результат, предполагая, что цель примерно прямоугольная.

Для того, чтобы получить от функции вероятности к фактической вероятности попадания в цель, мы интегрируем функцию A и в конечном итоге с дорогой функции ошибки - которая на самом деле называется функция ошибки: p(ϕ) = erf(ϕ sqrt(a)). Угол ϕ равен углу между целевой точкой и краем цели. С точки зрения целевого размера и с расстояния г: p(r) = erf(arctan(s/2r) sqrt(a)). Эта функция показана ниже для цели размера 1 и значений точности a=2и a=10.

Вероятность поражения цели в зависимости от расстояния

Обратите внимание, что в отличие от спада r ^ -2, вероятность аккуратно остается ниже единицы, независимо от того, насколько близка цель. Фактически, даже цель на точно нулевом расстоянии может быть пропущена из-за крайне малой вероятности, что ошибка составляет более 90 °.

Как я уже говорил, функция ошибок довольно дорогая, но ее аргумент ϕ sqrt(a)не сильно отличается для любого разумного сценария шутера. Мы можем сделать намного лучше, оценивая часть серии Тейлора вместо этого и ограничивая результат. Во- первых, мы на карте x = arctan(s/2r) sqrt(a), а затем оценить: 2 x - (2/3) x^3 + (1/5) x^5 .... Пропустите или добавьте столько терминов, сколько считаете необходимым, но имейте в виду, что четное количество терминов вызовет нежелательное поведение на малых расстояниях. Ниже приведена функция реальной ошибки по сравнению с первыми тремя ненулевыми членами ее ряда Тейлора.

Вероятность с использованием функции ошибок и рядов Тейлора

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


5

Вероятность, безусловно, является функцией 1 / r ^ 2, но не падает так быстро, как 1 / r ^ 2. Давайте не будем делать простую математику, и для простоты вычислений я сначала остановлюсь на 2D-съемке, которая приведет к 1D-ошибке при съемке. Цель всегда имеет одинаковую ширину, например, мы знаем, что цель имеет ширину в один метр. И мы также знаем, что при стрельбе пистолет может не попасть в цель с максимальным углом 5 градусов. вот рисунок, показывающий ситуацию:

фигура 1

Теперь посмотрим на эти три состояния. Предположим , что у них есть h1, h2и h3расстояние от угла. Основываясь на этих значениях и угле, мы можем рассчитать, сколько расстояние находится в этом состоянии. Он рассчитывается так же просто, как h*tan(10/2)*2(как показано на рисунке 2).

фигура 2

Мы знаем это h/l = cos(theta/2)и r/l = sin(theta/2)=> r/h = sin(theta/2)/cos(theta/2) = tan(theta/2)=> r = h*tan(theta/2)=>edge length = h*tan(theta/2)*2

С другой стороны, мы знаем, что сама цель имеет ширину 1 метр, поэтому, если это значение будет меньше одного метра, мы всегда будем поражать. после этой части он имеет вероятность "target surface"/"hit area", равную 1 / (h*tan(10/2)*2). Обратите внимание, что мы всегда можем предположить, что вся поверхность цели находится внутри конуса огня. это не сильно влияет на игровой процесс, но сильно облегчает вычисления!

Теперь вернемся к нашей проблеме 3D с 2D-целью. Поскольку речь идет о конусе, пуля всегда будет проходить через круг определенного диаметра при прохождении цели. снова нам нужно вычислить его радиус, а затем площадь этого круга. Как я уже объяснил, мы можем использовать, r=h*tan(10/2)*2и, следовательно, площадь поверхности pi*r^2 = h^2*tan^2(10/2)*4 * pi. И, в конце концов, мы знаем, что вероятность есть "target area"/"circle area" = 1 / h^2*tan^2(10/2)*4 * pi. как я сказал, это функция h ^ 2, но, поскольку tan^2(5)она очень мала, требуется много времени, прежде чем эта вероятность упадет до очень низкой величины.


1

Для этого вам нужно определенное понятие «неточность». Что такое неточность? Как это работает? Если вы кодируете ИИ, который стреляет и каждый раз вычисляет точный путь, то очевидно, что погрешность равна 0 на любом расстоянии.

Любой стреляющий ИИ сначала определяет идеальный путь, а затем добавляет неточность прицеливания. Эта неточность полностью определена вами, и это определение необходимо, прежде чем можно будет рассчитать любую вероятность.


Как я сказал в этом вопросе, точность - это вероятность попадания, потому что я пренебрегал точностью юнита (например, опытом) в этом первом приближении.
Хорхе Лейтао

@JC: Но вы не определили причину или означает, что точность юнита не будет каждый раз 100%.
DeadMG
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.