Правила маршрутных соревнований (дельтапланеризм)
Кратко — то, что нужно для FR-35. Первоисточники: FAI Sporting Code Section 7A (Cross Country — общие правила, класс 1 = дельтапланы) и Section 7F (XC Scoring — формула GAP, геометрия заданий). Документы: S7F 2024, S7A 2021, разбор GAP — GlideComp, формат XCTrack — xctrack.org/Competition_Interfaces. Точные коэффициенты меняются от редакции к редакции — сверять с актуальной версией S7F.
Типы заданий
| Тип | Суть | В игре |
|---|---|---|
| Race to goal (гонка к гоулу) | Одно или несколько стартовых окон (start gates). Время пилота отсчитывается от окна, после которого он стартовал, а не от своего пересечения. | type: "race" |
| Elapsed time (по личному времени) | Время — от своего пересечения старта до ESS. | type: "elapsed" |
| Open distance (открытая дальность) | Гоула нет (или он «в направлении»); считается пройденная дальность, пункты — необязательные. | type: "open_distance" |
Есть ещё варианты (distance with turnpoints, stopped task — остановленное задание с подсчётом по времени остановки), в игру пока не нужны.
Геометрия
- Взлёт (takeoff) — точка старта полётов, окно взлёта (открыто/закрыто по времени).
- Стартовый цилиндр (SSS, start of speed section): окружность вокруг точки, направление пересечения EXIT (вылет наружу — чаще всего вокруг взлёта) или ENTER (влёт внутрь — старт «в стороне»). Засчитывается только пересечение после открытия окна; пересёк раньше — надо вернуться и пересечь снова. Перестарт разрешён: засчитывается последнее корректное пересечение до следующего пункта.
- Поворотные пункты (turnpoints) — цилиндры, берутся по порядку. Пункт взят, если в треке есть хотя бы одна точка внутри цилиндра с учётом допуска. Радиус задаёт судейская коллегия: у дельтапланов обычно 400 м … несколько км (400 м — практический минимум, меньше GPS/прибор не различают).
- ESS (end of speed section) — конец скоростного участка: здесь останавливается время. Часто совпадает с гоулом.
- Гоул (goal) — линия (перпендикулярна направлению от предыдущего пункта; пересекать по ходу задания) или цилиндр (у дельтапланов — чаще линия, у парапланов — цилиндр). Долететь до гоула нужно после ESS.
- Допуск цилиндра: S7F — полоса вокруг границы, 0,1 % радиуса на Cat 1 и до 0,5 % на Cat 2, но не
меньше 5 м (из-за разницы расчёта расстояний в приборах). В игре:
cylinder_tolerance0,5 % иmin_tolerance_m5 м (configs/tasks/settings.json). - Модель Земли: WGS84-эллипсоид (или FAI-сфера). В игре — локальная равнопромежуточная проекция
(
TerrainGeo), ошибка < 1 % на 160 км — для учебной игры достаточно, но при сравнении с XCTrack дистанции могут отличаться на десятки метров.
Оптимизированный маршрут
Дистанция задания — кратчайший путь от взлёта через все цилиндры по порядку к гоулу: ломаная касается каждого цилиндра (точки на окружностях или внутри, если прямая и так проходит через цилиндр), а в гоул приходит к ближнему краю. Оставшаяся дистанция в полёте считается так же, от текущего положения через невзятые пункты. Пройденная дистанция пилота, не долетевшего до гоула = дистанция задания − лучшая (минимальная) оставшаяся за полёт.
Алгоритм в игре (RouteOptimizer): покоординатный спуск — точка на каждом цилиндре по очереди ставится
в оптимальное место при фиксированных соседях (если отрезок между соседями пересекает круг — точка на
отрезке; иначе минимум |a−x|+|x−b| на дуге окружности золотым сечением), проходы повторяются до сходимости
(< 5 см). Задача выпуклая, спуск на практике сходится к минимуму за несколько проходов (~0,1 мс на задание из 5 пунктов); тесты сравнивают с ручным расчётом и перебором.
Подсчёт (GAP, S7F — ориентир для экрана итога)
- Доступные очки = 1000 × валидность задания (валидность старта × дистанции × времени).
- Очки за дистанцию — пропорционально пройденной дистанции относительно лучшей; есть минимальная дистанция (обычно 5 км): взлетевший получает не меньше неё.
- Очки за время (только долетевшим до ESS): доля скорости
SF = max(0, 1 − ((t − t_min) / √t_min)^(5/6)), t в часах (показатель 5/6 — текущий S7F; в старых редакциях был 2/3). - Лидерские очки (leading) — за то, что летел впереди; очки за прилёт (arrival) — только у дельтапланов, по порядку прилёта на ESS.
- Дельтапланы: долетел до ESS, но не до гоула — по умолчанию сохраняется 80 % очков за время и прилёт.
В одиночной игре соперников нет, поэтому игра показывает итог без очков: время скоростного участка (для долетевших) или пройденную дистанцию, и сравнивает с локальными рекордами (FR-37).
Формат XCTrack .xctsk (версия 1, JSON)
{
"taskType": "CLASSIC", "version": 1, "earthModel": "WGS84",
"turnpoints": [
{"type": "TAKEOFF", "radius": 400,
"waypoint": {"name": "T01", "description": "", "lat": 50.78, "lon": 86.23, "altSmoothed": 1780}},
{"type": "SSS", "radius": 3000, "waypoint": {…}},
{"radius": 1000, "waypoint": {…}},
{"type": "ESS", "radius": 1000, "waypoint": {…}},
{"radius": 200, "waypoint": {…}}
],
"takeoff": {"timeOpen": "07:00:00Z", "timeClose": "09:00:00Z"},
"sss": {"type": "RACE", "direction": "EXIT", "timeGates": ["08:00:00Z", "08:20:00Z"]},
"goal": {"type": "LINE", "deadline": "12:00:00Z"}
}typeпункта:TAKEOFF/SSS/ESSили нет (обычный пункт); последний пункт — гоул.sss.type:RACE/ELAPSED-TIME;sss.direction:ENTER/EXIT;goal.type:CYLINDER/LINE.- Время — строка
HH:MM:SSZ(UTC); встречается в лишних кавычках ("\"12:00:00Z\"") — импорт снимает их. - Линия гоула: радиус пункта = половина длины линии, линия перпендикулярна направлению на предыдущий пункт.
- Версия 2 — сжатый формат для QR-кодов (
XCTSK:/XCTSKZ:, короткие ключи, polyline-координаты) — в игре пока не поддерживается. - Файлы заданий реальных соревнований публикуют организаторы (сайты соревнований, airtribune, XCTrack task
server) — положить
.xctskвuser://tasks/, и задание появится в списке (координаты должны попадать в загруженную локацию).