Laser Track. Как это работает - AndreyCorelli/LaserTrack GitHub Wiki

Базовый вариант реализации

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

На экран online выводится изображение с веб-камеры, предположительно, нацеленной на мишень. Пользователь «водит» по мишени целеуказателем. Приложение рисует крестик в центре пятна целеуказателя, поверх основной картинки.

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

Программа 1 – прицеливание на отдельные точки.

Пользователь настраивает: количество повторов упражнения. Интервал времени между повторами. Интервал вида 2..10 означает, что интервал задержки будет случайным, от 2 до 10 секунд. Задержку перед началом выполнения упражнения. Выдержав заданную паузу, программа начинает подавать звуковые (голосовые) сигналы – «Один», «Два» или «Альфа», «Браво» … – команда пользователю навести указатель на соответствующую мишень. Мишень каждый раз выбирается случайно. Пользователь наводится на мишень. Через какое-то время после подачи сигнала световое пятно оказывается в пределах окружности радиусом N пикселей с центром в заданной точке. Можно соотнести радиус окружности с физическим размером мишени и перевести пиксели в миллиметры. Далее, пользователь должен удержать указатель в центре соответствующей мишени в течение M секунд (задается в настройках упражнения). По окончанию упражнения (всех повторов) выводится статистика, содержащая, как минимум:

  • Количество попаданий – промахов,
  • Скорость наведения, средняя, минимальная и максимальная
  • СКО точки указателя от центра мишени в течение времени удержания
  • Графики – траектория движения центра светового пятна от момента наведения на мишень (либо от момента подачи соответствующей команды) до момента окончания времени удержания.

Статистика сохраняется в файл и доступна в виде архива.

Программа 2 – вскидка – поводка – выстрел

Отличия от программы 1 Получив команду – навестись на мишень 1, пользователь должен навестись на мишень № 1 (попасть центром светового пятна в пределы окружности радиусом N). Затем, незамедлительно, навести оружие на мишень № 2. Далее, удержание оружия M секунд.

Дальнейшее развитие

В более продвинутом варианте реализации фиксируется момент выстрела. Во время выполнения упражнения параллельно с сохранением информации о треке центра светового пятна сохраняется звуковой поток. По завершению выполнения упражнения звуковой поток анализируется на предмет поиска определенного шаблона – звука холостого спуска курка. Момент появления шаблона в звуковом потоке – момент «поражения» мишени. Время удержания более не задается. Шаблон холостого спуска задается в настройках («калибровке») пользователем.