Как формализовать убегание
Продолжая разговор о T-1000 и спиралях, можно нырнуть поглубже в эту задачу. Сейчас будет немного формул с производными, но я постараюсь не утопить вас в них.
Проще всего представить жертву A и хищника B на плоскости (в одномерном виде на линии тоже можно — но будет скучно), потому что в двумерном мире жить проще, особенно когда решаешь дифференциальные уравнения. Их начальные положения можно описать координатами:
A: (x₁, y₁)
B: (x₂, y₂)
Эти координаты будут меняться со временем, если жертва и хищник не стоят на месте. Проще начать рассуждать с хищника, основная стратегия которого будет "двигаться прямо к жертве". Это можно записать вот так:
dx₂/dt = v * (x₁ - x₂) / r
dy₂/dt = v * (y₁ - y₂) / r
где v — это скорость "хищника", а r — расстояние между A и B.
У хищника в самом простом случае может быть цель "догнать эту точку", а может быть что-то сложнее из серии догнать и оставаться на расстоянии 𝓵 в течение времени 𝓽 — чтобы, например, успеть бахнуть палкой жертву в этом сценарии применения типичных боевых орудий четвёртой мировой войны. От цели будет меняться и стратегия решения. И это даже без обсуждения о том, как ведёт себя "жертва", потому что она как раз может двигаться как угодно, хоть по спирали, хоть зигзагами.
В самом простом случае вообще A=B, и это уже не задача убегания, потому что от себя не убежишь, ахаха.
То есть, надо:
- Записать уравнение движения жертвы.
- Выпить кофе или что-то покрепче, потому что предыдущий пункт может занять некоторое время.
- Решить получившуюся систему.
В итоге можно получить траектории движения обоих объектов и сможем сказать, догонит ли "хищник" свою "жертву". Делов-то!