Объяснение волны

Я только начал экспериментировать с Robocode и читать о волнах: http://robowiki.net/wiki/Wave

я не понимаю, почему здесь используются круги.

я имею в виду, когда я стреляю в пулю, я стреляю только в одном направлении, а не во всех направлениях, которые подразумеваются при использовании круга.

Может ли кто-нибудь попытаться объяснить мне это обстоятельство и эту концепцию другими словами?

Я просто застрял прямо сейчас..

спасибо джулиан

2 ответа

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

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

Похоже, волновой подход подразумевает некоторую оптимизацию наивной реализации. Основная концепция будет заключаться в том, чтобы определить момент времени, когда снаряд пройдет цель. Это можно сделать, просто сравнив расстояние, пройденное "волной" от ее начала ("wave_velocity * (time_now - time_fired)") на расстоянии от цели до начала этой волны.

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

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

Другие вопросы по тегам