Мобильное приложение PerformStars
Записывайте, загружайте и разбирайте тренировки.
Скачать
← Исследования и разработки

PerformStars · Исследования и разработки

Сложность бильярдного удара: русская пирамида и пул

От геометрии позиции к допустимой погрешности прицеливания

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

w = βₘₐₓ − βₘᵢₙ

Полный допустимый интервал начальных направлений битка.
Чем он уже, тем точнее нужно выполнить удар.

Каноническая статья «Assessment of Billiard Shot Difficulty» · PDF на английском. Здесь изложены основные уравнения, сравнение пирамиды и пула и отдельная геометрия свояка.

1. Сложность как требование к точности

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

Сначала находим диапазон направлений прицельного шара, совместимых с входом в лузу. Затем через геометрию первого столкновения переводим его в допустимые направления битка. Ширина полученного интервала w, в радианах, — основной результат модели. Он учитывает конечный размер шара, вход в лузу, дистанции и резку.

Для отображения используется обратная шкала D = 0,10/w. Коэффициент задаёт масштаб чисел и не меняет порядок ударов. До округления удвоение D означает уменьшение углового допуска вдвое. Это геометрическая сложность, а не вероятность попадания конкретного игрока.

2. От видеозаписи к физическим координатам

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

  1. Калибровка стола. Перспектива преобразуется в прямоугольную систему координат игрового поля.
  2. Начальная позиция. Используются первые доступные координаты соответствующих траекторий. Качество этой позиции влияет на точность оценки.
  3. Шар и луза. Наблюдаемые направления движения дают кандидатов на попытку забивания. Геометрия должна допускать соответствующий удар; сама оценка сложности не доказывает намерение игрока.
  4. Размеры. Тип бильярда задаёт радиус шара и ширину входа в лузу. Размер стола переводит нормализованные координаты в метры.
  5. Расчёт. Модель определяет угловой допуск, тип попытки и сложность. Оценка в записи удара округляется до двух знаков.
X = xₚ · ℓ / 1280
Y = yₚ · b / 640

Здесь ℓ и b — длина и ширина игрового поля в метрах. Размеры шара и лузы берутся отдельно: увеличение стола не увеличивает их автоматически.

3. Как получается допустимый интервал

3.1. Обозначения и вход в лузу

C и O — центры битка и прицельного шара; P — середина входного отрезка лузы; R — радиус шара; 2a — ширина входа. Единичная нормаль n направлена из игрового поля через вход в лузу, t = (−nᵧ, nₓ) направлен вдоль входа. L — расстояние между центрами шаров. Все длины ниже выражены в метрах.

L = |O − C|;  e = (O − C)/L
x = (P − O) · t;  h = (P − O) · n
d² = x² + h²;  x = d sinφ;  h = d cosφ

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

3.2. Угловые границы прицельного шара

Для x ≥ 0, h > 0 и a > R верхняя граница задаётся пересечением линии входа с допустимым зазором. Нижняя определяется либо тем же условием, либо касанием к ближней ограничивающей точке:

φ₊ = atan2(x + a − R, h)

Если x ≤ a − R:
φ₋ = atan2(x − a + R, h)

Если x > a − R:
φ₋ = atan2(x − a, h)
     + atan2(R, √((x − a)² + h² − R²))

W = φ₊ − φ₋

Для отрицательного x отражаем границы: [φ₋, φ₊] ↦ [−φ₊, −φ₋], предварительно рассчитав их для |x|. Если интервал неположителен или начальная позиция пересекает ограничение, допустимого прямого входа нет. Двухаргументный atan2 сохраняет правильную угловую ветвь.

Для прямого направления на середину входа x = 0:

W = 2 atan2(a − R, d)

Это допуск направления прицельного шара. Для оценки всего удара его ещё нужно перенести через столкновение в начальные направления битка.

3.3. Первое столкновение

Для единичного направления прицельного шара u центр битка в момент контакта должен находиться в G = O − 2Ru. Требование приближающегося первого контакта строже простого ограничения резки в 90°:

G = O − 2Ru
(G − C) · u > 0  ⇔  (O − C) · u > 2R

γₖ = acos(2R/L),  L > 2R
δ = atan2(eₓnᵧ − eᵧnₓ, e · n)
[γ₋, γ₊] = ([δ + φ₋, δ + φ₊] + 2πk) ∩ [−γₖ, γₖ]

γ отсчитывается от направления C → O. Выбирается эквивалентная угловая ветвь k ∈ {−1, 0, 1}, дающая интервал положительной ширины. Если пересечения нет, прямой удар в данной постановке геометрически невозможен.

3.4. Начальное направление битка

В системе координат вдоль C → O вектор G − C имеет компоненты (L − 2R cosγ, −2R sinγ). Поэтому:

β(γ) = atan2(−2R sinγ, L − 2R cosγ)

dβ/dγ = 2R(2R − L cosγ)/(L² + 4R² − 4RL cosγ) < 0

w = β(γ₋) − β(γ₊)
  = atan2(−2R sinγ₋, L − 2R cosγ₋)
  − atan2(−2R sinγ₊, L − 2R cosγ₊)

На допустимом интервале отображение монотонно убывает, поэтому достаточно вычислить его на границах. Полученный w — полный диапазон начальных направлений битка. Он не обязан быть симметричным относительно направления на центр лузы.

Локальный коэффициент усиления угловой ошибки помогает объяснить влияние дистанции и резки:

A(γ) = |dγ/dβ|
     = (L² + 4R² − 4RL cosγ)/[2R(L cosγ − 2R)]

w ≈ (γ₊ − γ₋)/A  — для узкого интервала с почти постоянным A

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

4. Пирамида и пул: что именно отличается

Номинальные размеры в опубликованной реализации
ПараметрПул, 9 футовПирамида, 12 футов
Игровое поле2,540 × 1,270 м3,550 × 1,775 м
Диаметр шара57,15 мм68 мм
Вход угловой лузы128 мм73 мм
Вход средней лузы147,2 мм83 мм
Зазор на сторону, угловая луза35,425 мм2,5 мм
Зазор на сторону, средняя луза45,025 мм7,5 мм

Боковой зазор равен m = a − R. Для пирамиды он существенно меньше. Больший радиус уменьшает этот зазор, но одновременно меняет перенос ошибки при столкновении: влияние размера шара нельзя свести к одному множителю. При одинаковой угловой резке больший шар способен расширять допуск первого контакта, в то время как тесный вход в лузу его ограничивает.

При одинаковых физических расстояниях сравнивается прежде всего оборудование. При одинаковых относительных координатах добавляется увеличение расстояний на большем столе. Поэтому единого утверждения «пирамида в N раз сложнее пула» модель не даёт. Размеры здесь — параметры упрощённой геометрии; конкретный стол может требовать измерения входа в лузу.

5. Шесть схем: три сравнения

Во всех примерах выбран прямой удар прицельным шаром в среднюю лузу. C — биток, O — прицельный шар. Синий отрезок ведёт к контакту; оранжевый показывает движение прицельного шара для середины допустимого контактного интервала.

ПРИМЕР 1

Пул: прямой удар на одинаковой дистанции

Пул: прямой удар на одинаковой дистанции
ГЕОМЕТРИЧЕСКАЯ СЛОЖНОСТЬ2,61
Между центрами шаров, L
0,5000 м
До середины входа в лузу, d
0,3000 м
Допуск прицельного шара, W
0,297942892 рад
Допуск битка, w
0,038248272 рад
РАСЧЁТ ОЦЕНКИD = 0,10 / 0,038248272 ≈ 2,61
Координаты и промежуточные углы

Метры: C = (1,27000000; 0,80000000); O = (1,27000000; 0,30000000). R = 0,028575 м; 2a = 0,147200 м.

φ₋ = -0,148971446; φ₊ = 0,148971446; γ₋ = -0,148971446; γ₊ = 0,148971446 рад.

ПРИМЕР 2

Русская пирамида: прямой удар на одинаковой дистанции

Русская пирамида: прямой удар на одинаковой дистанции
ГЕОМЕТРИЧЕСКАЯ СЛОЖНОСТЬ12,71
Между центрами шаров, L
0,5000 м
До середины входа в лузу, d
0,3000 м
Допуск прицельного шара, W
0,049989587 рад
Допуск битка, w
0,007867485 рад
РАСЧЁТ ОЦЕНКИD = 0,10 / 0,007867485 ≈ 12,71
Координаты и промежуточные углы

Метры: C = (1,77500000; 0,80000000); O = (1,77500000; 0,30000000). R = 0,034000 м; 2a = 0,083000 м.

φ₋ = -0,024994794; φ₊ = 0,024994794; γ₋ = -0,024994794; γ₊ = 0,024994794 рад.

ПРИМЕР 3

Пул: одинаковая относительная позиция

Пул: одинаковая относительная позиция
ГЕОМЕТРИЧЕСКАЯ СЛОЖНОСТЬ2,70
Между центрами шаров, L
0,5080 м
До середины входа в лузу, d
0,3048 м
Допуск прицельного шара, W
0,293318393 рад
Допуск битка, w
0,036993494 рад
РАСЧЁТ ОЦЕНКИD = 0,10 / 0,036993494 ≈ 2,70
Координаты и промежуточные углы

Метры: C = (1,27000000; 0,81280000); O = (1,27000000; 0,30480000). R = 0,028575 м; 2a = 0,147200 м.

φ₋ = -0,146659197; φ₊ = 0,146659197; γ₋ = -0,146659197; γ₊ = 0,146659197 рад.

ПРИМЕР 4

Русская пирамида: одинаковая относительная позиция

Русская пирамида: одинаковая относительная позиция
ГЕОМЕТРИЧЕСКАЯ СЛОЖНОСТЬ26,82
Между центрами шаров, L
0,7100 м
До середины входа в лузу, d
0,4260 м
Допуск прицельного шара, W
0,035207630 рад
Допуск битка, w
0,003728899 рад
РАСЧЁТ ОЦЕНКИD = 0,10 / 0,003728899 ≈ 26,82
Координаты и промежуточные углы

Метры: C = (1,77500000; 1,13600000); O = (1,77500000; 0,42600000). R = 0,034000 м; 2a = 0,083000 м.

φ₋ = -0,017603815; φ₊ = 0,017603815; γ₋ = -0,017603815; γ₊ = 0,017603815 рад.

ПРИМЕР 5

Пул: резка при одинаковой дистанции

Пул: резка при одинаковой дистанции
ГЕОМЕТРИЧЕСКАЯ СЛОЖНОСТЬ6,85
Между центрами шаров, L
0,5000 м
До середины входа в лузу, d
0,3000 м
Допуск прицельного шара, W
0,297942892 рад
Допуск битка, w
0,014596014 рад
РАСЧЁТ ОЦЕНКИD = 0,10 / 0,014596014 ≈ 6,85
Координаты и промежуточные углы

Метры: C = (1,70301270; 0,55000000); O = (1,27000000; 0,30000000). R = 0,028575 м; 2a = 0,147200 м.

φ₋ = -0,148971446; φ₊ = 0,148971446; γ₋ = 0,898226105; γ₊ = 1,196168997 рад.

ПРИМЕР 6

Русская пирамида: резка при одинаковой дистанции

Русская пирамида: резка при одинаковой дистанции
ГЕОМЕТРИЧЕСКАЯ СЛОЖНОСТЬ35,66
Между центрами шаров, L
0,5000 м
До середины входа в лузу, d
0,3000 м
Допуск прицельного шара, W
0,049989587 рад
Допуск битка, w
0,002804154 рад
РАСЧЁТ ОЦЕНКИD = 0,10 / 0,002804154 ≈ 35,66
Координаты и промежуточные углы

Метры: C = (2,20801270; 0,55000000); O = (1,77500000; 0,30000000). R = 0,034000 м; 2a = 0,083000 м.

φ₋ = -0,024994794; φ₊ = 0,024994794; γ₋ = 1,022202758; γ₊ = 1,072192345 рад.

Сопоставление пар примеров
УсловияПулПирамидаОтношение оценок
Прямой удар: L = 0,50 м, d = 0,30 м2,6112,714,86 раза
Одинаковые доли длины и ширины стола2,7026,829,92 раза
Резка: те же расстояния, отклонение линии центров 60°6,8535,665,21 раза

Вторая пара показывает совместное влияние оборудования и более длинных дистанций: L увеличивается с 0,508 до 0,710 м, d — с 0,3048 до 0,426 м. Отношение оценок здесь около 9,92. Это результат конкретной пары позиций, а не коэффициент для всей русской пирамиды.

6. Свояк: в лузу направляется биток

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

В используемой упрощённой постановке шары одинаковы по массе и радиусу, столкновение упругое, вращение не учитывается. В системе вдоль C → O для выбранного контактного направления u = (cosγ, sinγ) вычисляется центр битка при контакте G, затем его выходное касательное направление v:

G = O − 2Ru
v = sign(γ) · (sinγ, −cosγ),  γ ≠ 0

s = ((P − G) · n)/(v · n)
H = G + sv

s > 0;  v · n > 0
|(H − P) · t| ≤ a − R
distance(E₋, segment(G,H)) ≥ R
distance(E₊, segment(G,H)) ≥ R
E₋ = P − at;  E₊ = P + at

Последние условия требуют, чтобы биток двигался к входу, пересёк его с необходимым зазором и до пересечения не задел ограничивающие точки. Также сохраняется условие приближающегося первого контакта |γ| < acos(2R/L). Центральный контакт γ = 0 исключается: в этой постановке биток останавливается.

Границы допустимых контактных интервалов находятся аналитически по условиям касания и пересечения входа. Каждый интервал переводится в начальные направления битка через ту же функцию β(γ). Если интервалов несколько, расчёт выбирает самый широкий непрерывный интервал, а не складывает раздельные диапазоны.

Для пирамиды оцениваются допустимые варианты «чужой в лузу» и «свой в лузу» для кандидатов, полученных из наблюдений. Выбирается меньшая геометрическая сложность. При выборе свояка сохраняются соответствующий тип попытки, забиваемый шар и выбранная луза. В пуле забивание битка не рассматривается как успешный вариант забивания.

Такая процедура даёт геометрически наиболее доступный из рассмотренных вариантов. Она не является самостоятельным доказательством намерения игрока. Свояки в реальной игре зависят также от вращения и условий контакта, которые эта метрика не описывает.

7. Где это используется в PerformStars

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

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

8. Границы модели

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

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

9. Исходные данные и воспроизведение

Автор канонической публикации — Dmitrii Sadovnik. PDF с полным выводом геометрии прямого забивания содержит формулы и расчётные примеры. Дополнительная постановка свояка приведена выше и реализована в функции cuePotDifficulty.

Сохраните оба модуля рядом и загрузите JSON с примерами. Для каждого примера переведите координаты в нормализованную сетку и вызовите difficultyFromTablePoints:

import {difficultyFromTablePoints} from './model.mjs';

const px = p => ({
  x: p[0] * 1280 / example.table.l,
  y: p[1] * 640 / example.table.w
});
const result = difficultyFromTablePoints(
  px(example.cue), px(example.object),
  example.pocketId, example.size, example.game
);
console.log(result.cueAngularTolerance, result.compl);

Для расчёта свояка используется последний аргумент 'cue' при типе игры 'pyramid'. Вычисления выполняются без внешних пакетов и подключения к базе. В JSON сохранены значения полной точности; в статье оценки округлены для чтения.

Дмитрий Садовник · PerformStars Research & Engineering