- PVSM.RU - https://www.pvsm.ru -
Представьте: 80-я минута, счёт 1:1. Нападающий соперника получает мяч на фланге и уходит в рывок вдоль бровки. Защитник бежит рядом, чуть левее — между нападающим и центром поля. Где-то в центре полузащитник соперника уже прицеливается для прострела.
И в этот момент защитник должен принять решение — молниеносно, без калькулятора, без времени на раздумья: я контролирую ситуацию или мне нужна помощь партнёра?
Опытный защитник решает это интуитивно. Но что именно стоит за этой интуицией? Оказывается — вполне конкретная математика. Причём такая, которую проходят в школе.
У защитника есть зона контроля — сектор пространства, в котором он способен среагировать на действия нападающего. Её размер определяется тремя физическими факторами: временем реакции, скоростью бега и углом периферийного зрения. Пока нападающий находится внутри этого сектора — защитник держит ситуацию под контролем. Как только нападающий выходит за его границу — контроль потерян, нужна подстраховка.
Задача, которую мы разберём в этой статье, даёт конкретный ответ на конкретный вопрос: окажется ли нападающий в зоне контроля защитника в момент приёма паса — и когда защитнику нужно звать партнёра?
Для решения не понадобится ничего сверхъестественного: уравнения прямых, расстояние между точками, три геометрических условия. Весь необходимый аппарат вы уже проходили — просто, возможно, не думали, что он помогает принимать решения на футбольном поле.
В конце статьи мы реализуем модель в среде Engee на языке Julia — с визуализацией зоны контроля в начальный момент и через время t1.
В 1732 году французский математик и физик Пьер Бугер — тот самый, чьим именем назван закон ослабления света в оптике — впервые формально поставил задачу, которая сегодня называется задачей преследования.
Сценарий был морским: пиратский корабль преследует торговое судно. Пират всегда направляет нос корабля точно на цель. Вопрос: какую кривую опишет пират и настигнет ли он жертву?
Бугер вывел уравнение этой кривой. Впоследствии она получила название кривой преследования — или courbe du chien («кривая собаки»): та же задача популярно формулировалась как «собака гонится за зайцем». Суть проста: преследователь в каждый момент времени направляет свою скорость прямо к текущему положению цели.
Это красиво. Но для футбола — нереалистично.
Опытный защитник не бежит туда, где нападающий находится сейчас. Он контролирует пространство рядом с собой — зону, из которой способен среагировать. Это принципиально другая стратегия, и математика у неё другая.
Наша задача устроена иначе, чем задача Бугера. Оба игрока движутся прямолинейно с постоянными скоростями. Время проверки задаётся извне — это время, за которое защитник способен среагировать с учётом реакции. Нужно вычислить, где окажется каждый из игроков через t1 секунд, и ответить на геометрический вопрос: попадает ли нападающий в зону контроля защитника?
Именно такой подход лежит в основе современной спортивной аналитики. В 2011 году физик Уильям Спирмен, работавший в аналитическом отделе Liverpool FC, предложил модель pitch control: для каждой точки поля и каждого момента времени она вычисляет вероятность того, что игрок данной команды окажется там раньше соперника. В основе — ровно та же кинематика: прямолинейное движение, фиксированный момент времени, геометрический критерий.
Наша модель — частный, математически строгий случай той же идеи. Не карта всего поля, а один конкретный эпизод: один защитник, один нападающий, одна зона контроля.
Прежде чем писать формулы, разберёмся с физическим смыслом. Зона контроля — это не условная область на тактической доске. Это вполне конкретный сектор пространства, размер и форма которого жёстко определяются физиологией и биомеханикой игрока.
Между зрительным сигналом и первым шагом проходит цепочка последовательных процессов:
Восприятие — зрительный сигнал достигает коры головного : ~20 мс
Обработка — оценка ситуации и принятие решения: ~130–150 мс
Мышечный ответ — от сигнала
Суммарно: τ≈0.2 с. Кажется немного. Но за это время нападающий на скорости 7 м/с уйдёт на 1.4 м. А защитник всё ещё стоит на месте.
Именно поэтому время t1 в модели — это не просто расстояние делённое на скорость. Это расстояние делённое на скорость плюс время реакции:

Рассматриваемый сценарий — фланговое сопровождение: нападающий бежит с мячом вдоль бровки, защитник рядом, между нападающим и центром поля. Радиус определяется максимальным расстоянием плотной опеки — типовое значение для профессионального футбола: R≈2–3 м.
Защитник движется боком вдоль бровки, контролируя нападающего сбоку — работает периферийное зрение. Футболисты высокого уровня уверенно отслеживают объекты в секторе ±30-45° от оси взгляда. Итого: φ ≈ 60°- 90°.
Защитник всегда располагается между нападающим и центром поля — левее нападающего при атаке по правому флангу. Поэтому зона контроля направлена вправо от вектора движения защитника — в сторону бровки, где находится нападающий, как показано на рис. 3.
|
Параметр |
Значение в программе |
|---|---|
|
(xc,yc) — координаты защитника |
(−2.5, 0.0) м |
|
Vc — скорость защитника |
5.0 м/с |
|
βc — направление защитника |
0°(на север) |
|
(x1,y1) — координаты нападающего |
(0.0, 0.0) м |
|
V1 — скорость нападающего |
5.2 м/с |
|
β1 — направление нападающего |
0°(на север) |
|
R — радиус контроля |
3.0 м |
|
φ — угол сектора |
90° |
|
τ — время реакции |
0.2 с |
Зафиксируем начальный момент времени. Оба игрока уже в движении — защитник сопровождает нападающего вдоль бровки.
Защитник — точка L с координатами (xc,yc), скоростью Vc и направлением βc. Располагается левее нападающего — между ним и центром поля.
Нападающий — точка A с координатами (x1,y1), скоростью V1 и направлением β1. Движется вдоль бровки.
Зона контроля — сектор MLK с вершиной в точке L, радиусом R и углом φ, направленный вправо от вектора скорости защитника — в сторону бровки. В начальный момент нападающий находится внутри зоны.
Начальное расстояние между игроками:

Начальное расстояние между игроками:

Оба игрока движутся прямолинейно с постоянными скоростями — разумное приближение для короткого отрезка времени в 1–2 секунды.
Вопрос 1: окажется ли нападающий в зоне контроля защитника через время t1?
Вопрос 2: через сколько секунд texittexit нападающий покинет зону контроля — когда защитнику нужно звать партнёра?
Переводим скорости из азимутального представления в декартовы составляющие. Азимут отсчитывается от оси OY (север) по часовой стрелке — поэтому синус даёт горизонтальную составляющую, косинус — вертикальную:
Для защитника:

Для нападающего:

Зона контроля направлена перпендикулярно от вектора движения защитника — в сторону бровки, где находится нападающий. Направление зависит от того, по какому флангу идёт атака. Единая формула для обоих случаев — через параметр δ:

Через время t1 нападающий окажется в точке A′, а вся зона контроля сместится вместе с защитником:

Обратите внимание: разность (xA′−xL′) — это смещение нападающего относительно защитника за время t1. Это хорошая проверка правильности формул.
Каждая граница сектора — прямая через две известные точки. Запишем в форме Ax+By+C=0:
Граница M′L′:

Граница K′L′:

Сектор M′L′K′ — пересечение трёх областей: круга радиуса R с центром L′ и двух полуплоскостей. Нападающий попадает в зону тогда и только тогда, когда выполнены все три условия одновременно.
Условие 1 — нападающий не дальше R от защитника:

Условие 2 — A′ и K′ по одну сторону от прямой M′L′′:

Условие 3 — A′A′ и M′M′ по одну сторону от прямой K′L′:

Смысл условий 2 и 3. Подстановка точки в уравнение прямой даёт число, знак которого определяет сторону от прямой. Если два числа имеют одинаковый знак — точки по одну сторону. Произведение ≥ 0 — математически компактная запись этого факта.
Если все три условия выполнены — нападающий в зоне, ситуация под контролем. Если хотя бы одно нарушено — нужна подстраховка.
Алгоритм также находит момент texit — когда нападающий покинет зону контроля. Это делается перебором с шагом 0.01 с.
Это позволяет дать защитнику конкретную рекомендацию: подать сигнал партнёру не позднее чем за τ секунд до потери контроля:

|
Результат |
Рекомендация |
|---|---|
|
Нападающий в зоне (t1) ✅ |
Держишь — ситуация под контролем |
|
Нападающий вне зоны (t1) ❌ |
Нужна подстраховка немедленно |
|
texit велико |
Торопиться не нужно |
|
texit мало |
Зови партнёра заранее |
Всю описанную математику мы реализовали в среде Engee [10] на языке Julia. Engee — облачная среда динамического моделирования, работает прямо в браузере без установки и регистрации. Именно поэтому с ней справится любой, кто знаком с основами программирования: открыл ссылку — и считаешь.
Скрипт разбит на шесть логических блоков.
Блок 1. Параметры модели — все числа в одном месте:
# Защитник — левее нападающего, между ним и центром поля
xc = -2.5 # X защитника
yc = 0.0 # Y защитника
Vc = 5.0 # скорость, м/с
βc = 0.0 # направление (на север), азимут 0°
R = 3.0 # радиус зоны контроля, м
φ = 90.0 # угол сектора, градусы
τ = 0.2 # время реакции, с
# Нападающий — у правой бровки
x1 = 0.0
y1 = 0.0
V1 = 5.2 # скорость, м/с
β1 = 0.0 # направление (на север), азимут 0°
Блок 2. Расстояние и время — с учётом реакции:
D1 = sqrt((xc - x1)^2 + (yc - y1)^2)
t1 = D1 / Vc + τ
Блок 3. Скорости и координаты сектора: .
deg2r(d) = d * π / 180
vel(V, β_deg) = (V * sin(deg2r(β_deg)), V * cos(deg2r(β_deg)))
Vxc, Vyc = vel(Vc, βc)
Vx1, Vy1 = vel(V1, β1)
# Зона вправо (+90° от направления движения)
βM = βc + 90.0 - φ/2
βK = βc + 90.0 + φ/2
xM = xc + R*sin(deg2r(βM)); yM = yc + R*cos(deg2r(βM))
xK = xc + R*sin(deg2r(βK)); yK = yc + R*cos(deg2r(βK))
Блок 4. Три условия попадания:
xA2 = xA + t1*Vx1; yA2 = yA + t1*Vy1
xL2 = xL + t1*Vxc; yL2 = yL + t1*Vyc
xM2 = xM + t1*Vxc; yM2 = yM + t1*Vyc
xK2 = xK + t1*Vxc; yK2 = yK + t1*Vyc
A_ML = yM2-yL2; B_ML = xL2-xM2; C_ML = -xL2*A_ML - yL2*B_ML
A_KL = yK2-yL2; B_KL = xL2-xK2; C_KL = -xL2*A_KL - yL2*B_KL
dist_AL2 = sqrt((xA2-xL2)^2 + (yA2-yL2)^2)
cond1 = dist_AL2 <= R
cond2 = (xA2*A_ML+yA2*B_ML+C_ML)*(xK2*A_ML+yK2*B_ML+C_ML) >= 0
cond3 = (xA2*A_KL+yA2*B_KL+C_KL)*(xM2*A_KL+yM2*B_KL+C_KL) >= 0
in_zone = cond1 && cond2 && cond3
Блок 5. Время выхода из зоны — перебором с шагом 0.01 с:
t_exit = NaN
for t in 0.0:0.01:10.0
if !in_zone_at(t)
global t_exit = t
break
end
end
println("Выход из зоны: t_exit = $(round(t_exit, digits=2)) с")
println("Сигнал партнёру не позднее: $(round(max(0.0, t_exit - τ), digits=2)) с")
Блок 6. Визуализация — начальная и смещённая зона контроля, траектории, статус:
function sector_pts(xL, yL, β_center_deg, R, φ_deg; n=80)
β0 = deg2r(β_center_deg - φ_deg/2)
β1 = deg2r(β_center_deg + φ_deg/2)
angs = range(β0, β1, length=n)
xs = [xL; [xL + R*sin(a) for a in angs]; xL]
ys = [yL; [yL + R*cos(a) for a in angs]; yL]
return xs, ys
end
zone_dir = βc + 90.0 # вправо — к бровке
sx0, sy0 = sector_pts(xL, yL, zone_dir, R, φ) # t = 0
sx1, sy1 = sector_pts(xL2, yL2, zone_dir, R, φ) # t = t1
Пример вывода программы:

Задача, которую мы разобрали, — не учебный пример. Она возникает везде, где есть движущийся игрок с ограниченной зоной контроля и движущаяся цель.
Современные тренерские штабы разбирают матчи поэпизодно. Вопрос «почему защитник не успел?» чаще всего решается интуитивно — по видео. Наша модель даёт количественный ответ: защитник не успел потому, что texit в данном эпизоде составляло 0.8 с, а не 3 с. Это конкретная цифра, с которой можно работать: менять стартовую позицию, скорость выдвижения, момент подачи сигнала партнёру.
Параметры модели — R, φ, τ — индивидуальны для каждого игрока. Измерив их на тренировке, можно построить персональную зону контроля и сравнить её с зонами соперников. Это даёт тренеру объективную основу: кого ставить против быстрого нападающего, кому нужна подстраховка на правом фланге.
Модель Спирмена строит карту контроля для всего поля сразу. Наша модель — точечная: один защитник, один нападающий, один эпизод. Но математический аппарат тот же самый. По сути, pitch control — это наша модель, запущенная параллельно для нескольких сотен точек поля и всех пар игроков одновременно.
Та же математика работает в любом командном виде спорта с зональной опекой — хоккей, баскетбол, гандбол. Везде есть движущийся защитник с ограниченным углом зрения и движущийся нападающий. Везде стоит один и тот же вопрос: сколько осталось времени до потери контроля?
Мы начали с простого игрового эпизода — защитник сопровождает нападающего вдоль бровки — и пришли к работающей математической модели, которая даёт конкретные ответы на конкретные тактические вопросы.
По пути выяснилось несколько неочевидных вещей.
Во-первых, интуиция опытного защитника — это не магия. За ней стоит кинематика: относительная скорость, радиус контроля, угол периферийного зрения. Всё это поддаётся измерению и расчёту.
Во-вторых, математика здесь действительно школьная. Уравнение прямой, расстояние между точками, три геометрических условия — этого достаточно, чтобы построить модель, которая по структуре не отличается от того, что используется в профессиональных системах спортивной аналитики.
В-третьих, главный результат модели — не просто «да» или «нет». Это число texit: сколько секунд у защитника до потери контроля. Именно это число превращает качественное тренерское наблюдение в количественную рекомендацию.
В-четвёртых, модель универсальна. Та же математика работает везде, где есть движущийся наблюдатель с сектором обзора и движущаяся цель — хоккей, баскетбол, робототехника и т.д.. Алгоритм одинаков. Меняются только числа во входных параметрах.
Пьер Бугер в 1732 году решал задачу для пиратского корабля. Уильям Спирмен в 2011 году — для футбольного поля. Мы в этой статье — для одного конкретного эпизода с одним защитником и одним нападающим. Все три задачи — об одном и том же: как движущийся наблюдатель контролирует движущуюся цель. Математика не изменилась за триста лет. Изменились только приложения.
Следующий шаг — учесть, что защитник не движется прямолинейно. Он реагирует на нападающего, меняет направление, ускоряется. Это уже дифференциальные уравнения и задача оптимального управления. Но фундамент — ровно тот, что мы разобрали здесь.
Автор: andrey_chepiga
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/julia/446835
Ссылки в тексте:
[1] Введение: #intro
[2] Немного истории: от кривой Бугера до зонального контроля: #history
[3] Откуда берётся зона контроля: биомеханика защитника: #biomechanic
[4] Постановка задачи: #task
[5] Математика: как это решается: #math
[6] Реализация в Engee: #engee
[7] Практическое применение: #using
[8] Заключение: #end
[9] мозга: http://www.braintools.ru
[10] Engee: https://engee.com/
[11] Готовая модель в Engee: https://engee.com/community/ru/catalogs/projects/modelirovanie-futbolnoi-zonalnoi-opeki-v-engee
[12] Источник: https://habr.com/ru/articles/1009584/?utm_campaign=1009584&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.