geladen.ch

Peaceful. Precise. Armed.

geladen.ch ballistics Руководство пользователя — Целкометр

Часть баллистического пакета geladen.ch. Преемник отдельной программы TARAN.


0. Заметка для зануд

Да, в этом документе то и дело используется слово "целкость" вместо общепринятого "кучность". Мне так нравится.

Да, вместо общепринятого "поперечник серии", в этом документе и в коде постоянно используется калька с английского extreme spread — максимальный разброс (сокр. "Маразб"). Это — по историческим причинам, ну и просто — мне так нравится (неплохо отражает инженерную ценность этого способа измерения).

1. Для чего этот инструмент

У каждого стрелка есть цифра, которую он приводит, говоря про свою винтовку — цифра целкости. Она почти всегда неверна, и почти всегда неверна в одну и ту же сторону — в сторону оптимизма.

Причина не в нечестности, а в арифметике. Традиционный способ измерить кучность винтовки — отстрелять серию из пяти выстрелов, померить расстояние между двумя самыми далёкими пробоинами и назвать это число «кучностью моей винтовки». Такое измерение — единичная выборка из очень широкого случайного распределения. Отстреляйте десять таких серий из той же винтовки, теми же патронами, с того же станка и в тот же день: лучшая регулярно окажется вдвое меньше худшей. И если вы затем называете лучшую — а называют всегда лучшую, — вы описываете не винтовку. Вы описываете свою удачу.

Целкометр делает обратное. Вместо вопроса насколько велика была эта серия он спрашивает: каково истинное рассеивание этой связки винтовка/патрон и насколько я уверен в этом ответе. Делает он это, сводя каждый выстрел, когда-либо занесённый вами в проект — по стольким мишеням и стольким сериям, сколько вы готовы отстрелять, — в одну оценку, и приводя доверительный интервал рядом с каждым числом, чтобы вы сразу видели, измерили ли вы нечто реальное или всего лишь собрали очередную байку / красивую картинку чтобы запостить на форум.

Порядок работы намеренно нехитрый. Не нужны ни хронограф, ни акустическая мишень, ни лазерный дальномер, ни что-либо, подключаемое к приложению. Нужны бумажные мишени, линейка и камера телефона.

Чем Целкометр не является

Это не программа подсчёта очков. Ему безразличны габариты, десятки и матчевая ценность. Он измеряет рассеивание и точку попадания, и больше ничего.

Это и не замена инструменту Вероятность попадания, который сводит кучность винтовки с ветром, ошибкой определения дистанции и мастерством стрелка, чтобы предсказать вероятность попадания первым выстрелом на определённой дистанции. Этот инструмент измеряет одну из величин, которые тот потребляет, — собственную механическую кучность винтовки — и может передать её напрямую (см. §10.3).


2. Приватность, хранение и требования

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

Следствие вполне ожидаемое: если вы очистите данные сайтов в браузере, ваши проекты исчезнут. Серверной копии для восстановления не существует. Пользуйтесь резервным копированием (§9), если данные вам дороги.

Требования. Любой достаточно современный браузер. Инструмент пригоден для телефона — более того, отмечать пробоины касанием фотографии на экране, пожалуй, самый естественный способ им пользоваться, — но отчёт о кучности, где диаграмма, легенда и таблица показателей стоят рядом, удобнее смотреть на планшете или настольном экране. Приложение устанавливается как PWA и после загрузки полностью работает без сети.


3. Модель данных: проекты, мишени, серии, пробоины

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

Проект          одна винтовка + одно снаряжение + одна дистанция
  └─ Мишень     одна фотография одного листа бумаги
       └─ Серия  одна точка прицеливания и выстрелы по ней
            └─ Пробоина   одно отверстие от пули

Проект — единица анализа. Всё внутри проекта сводится в одну статистическую оценку, а значит, всё внутри проекта должно быть сопоставимо: одна винтовка, один патрон, одна дистанция. У проекта есть название, дистанция до мишени и калибр. Дистанция нужна потому, что от неё зависит любой угловой результат (мрад, МОА); калибр нужен, чтобы диаграмма рисовала пробоины в их истинном размере.

Если вы меняете что угодно в винтовке или снаряжении — другую навеску, другую пулю, режим чистки ствола, в который вы действительно верите, — заводите новый проект. Сведение двух разных снаряжений не даст вам рассеивания ни того, ни другого.

Мишень — это одна фотография. Каждая мишень несёт собственную калибровку масштаба, потому что каждый снимок сделан с чуть иного расстояния и под чуть иным углом. Именно поэтому калибровка привязана к мишени, а не к проекту: инструмент никогда не предполагает, что у двух снимков одинаковое число пикселей на миллиметр.

Серия — это точка прицеливания плюс выстрелы по ней. Один лист может — и обычно должен — нести несколько серий: лист с четырьмя напечатанными ромбами, по пять выстрелов в каждый, — это одна мишень с четырьмя сериями.

Пробоина — одно отверстие от пули, отмеченное на фотографии.

Почему серии важны статистически

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

Представьте четыре серии на одном листе А4, отстрелянные по четырём разным ромбам. Если бы инструмент просто свёл сырые положения пробоин, он посчитал бы рассеивание > 200 мм — разброс ромбов, а не разброс винтовки. Перецентрируя каждый выстрел на ту точку прицеливания, по которой он был сделан, все четыре серии складываются в одно общее начало отсчёта, и остаётся подлинное рассеивание от выстрела к выстрелу.

Отсюда же следует, что ваши отметки точки прицеливания должны быть честными. Если вы ставите точку прицеливания в зрительный центр серии, а не туда, куда действительно целились, вы зарубаете способность инструмента измерить ваше отклонение от нуля (§8.3) и вообще — что бы то ни было.

3.1 Замечание о единицах измерения

Каждое число, которое этот инструмент вам показывает, и каждое число, которое он даёт вам ввести, — в тех единицах, что вы выбрали в настройках. Скрытых исключений нет, и нет поля, которое втихую ждало бы чего-то иного. Если вы работаете в дюймах и ярдах, вы нигде в этом инструменте не увидите и не введёте ни одного миллиметра.

В деле участвуют две группы единиц пакета:

  • Дистанция (м, yd, ft) — дистанция проекта.
  • Малая длина (мм, см, in) — всё, что меряется по бумаге: калибровочная линейка, которую вы вводите, калибр, максимальный разброс и каждый результат отчёта, когда переключатель единиц стоит на абсолютных, а не на угловых. Поскольку это измерения пулевого масштаба, показываются они точнее общего умолчания пакета: 2 знака после запятой в мм, 3 в см и дюймах.

Внутри движок работает исключительно в миллиметрах и метрах, а преобразование происходит только на границе отображения. Отсюда полезное практическое следствие: смена предпочтения по единицам никогда не меняет ни сохранённых данных, ни какого-либо вычисленного результата. Переключитесь с мм на дюймы — и каждый существующий проект отобразится верно: калибровка, введённая вами в прошлом году как 100 мм, теперь читается как 3,937 in, описывает ту же самую линейку и даёт ровно те же показатели рассеивания.

Где указаны единицы. Поля ввода несут единицу «живым» суффиксом в подписи — «Истинная длина (in)», — который обновляется при смене предпочтения, а не зашит в перевод. Показываемые значения несут единицу в строке: «Маразб 1,78 in». Экспорт CSV называет единицу в заголовке каждого столбца (§8.7).

Единственное исключение. Переключатель Единицы отображения результатов в отчёте (§8.1) может выразить показатели в мрад или МОА вместо длины. Он управляет только легендой и таблицей Показатели; заголовок страницы и масштабная линейка диаграммы по-прежнему следуют вашему общему предпочтению, а экспорт CSV его вовсе игнорирует, поскольку сырые координаты — всегда длина.

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


4. Быстрый старт

Для нетерпеливых. Подробности — в §5–§9.

  1. Кучность винтовки из меню инструментов → Добавить проект. Дайте название, дистанцию, калибр. Сохраните.
  2. Добавить мишеньВыбрать фото… → выберите снимок вашего листа с мишенью → при необходимости поверните, при желании стяните углы обрезки → Использовать это фото.
  3. Вы попадаете прямо в рабочую область разметки, на шаг калибровки. Коснитесь одного конца линейки на снимке, коснитесь другого, введите истинное расстояние между двумя точками — в ваших единицах, как гласит подпись поля, — и нажмите Завершить калибровку.
  4. Коснитесь того места, куда целились. Это ставит точку прицеливания.
  5. Коснитесь каждой пробоины. Продолжайте тапать. Закончив — Закончить отметку пробоин.
  6. Добавить серию и повторите с шага 4 для каждой следующей серии на листе.
  7. Вернитесь к проекту. Добавить мишень для следующего листа или, когда выстрелов накопится достаточно, Показать отчёт.

Не ждите от отчёта ничего заслуживающего доверия, пока не наберётся хотя бы два десятка выстрелов. См. §8.6.


5. Проекты

5.1 Создание проекта

Добавить проект открывает короткую форму:

  • Название проекта — обязательно. Если вы введёте название, уже имеющееся в вашей библиотеке, появится предупреждение, что сохранение перезапишет существующую запись. Это предупреждение, а не запрет.
  • Дистанция — расстояние от дульного среза до мишени. Вводится и показывается в той единице дистанции, что настроена в настройках (м, yd или ft); внутри в любом случае хранится в метрах, поэтому смена предпочтения позже правильно перерисует существующие проекты, а не испортит их. Это значение управляет каждым угловым пересчётом в отчёте, так что убедитесь, что число соответствует показанной рядом единице. Если у вас выставлены метры, а вы вводите 100 для мишени, которую на самом деле отстреляли на 100 ярдов, каждая величина в мрад и МОА в отчёте выйдет примерно на 9 % меньше — и нигде ничего вас не предупредит, потому что 100 м — вполне правдоподобная цифра.
  • Калибр — выбирается либо из выпадающего списка стандартных обозначений (того же, что и в Арсенале), либо вводится вручную, в вашей единице малой длины. Он служит для отрисовки пробоин в истинном диаметре канала ствола на диаграмме отчёта, и больше нигде — на показатели он не влияет.

5.2 Список проектов

Каждый сохранённый проект показывает своё название и число мишеней. Как только в проекте накопится достаточно отмеченных пробоин для сводных показателей, в его строке дополнительно появляется главный результат — сводный R50 и в мрад, и в МОА — и цветная плашка достоверности, дающая оценку с одного взгляда (см. §8.6). Это позволяет пробежать глазами список из дюжины проектов по подбору снаряжения и сразу увидеть, какие из них вы действительно отстреляли достаточно, чтобы им верить.

В строке проекта могут появиться две подсказки:

  • Есть непригодные мишени — хотя бы одной мишени в проекте чего-то не хватает, и она исключена из анализа.
  • Нет пригодных мишеней — в этом проекте пока нечего анализировать.

5.3 Действия над проектом

  • Изменить / Удалить — удаление проекта удаляет все его мишени, серии, пробоины и фотографии. У вас спросят подтверждение.
  • Сделать резервную копию в файл — записывает этот единственный проект, вместе с фотографиями, в файл JSON.
  • Задать как точность патрона… — передаёт измеренную кучность этого проекта патрону в Арсенале. См. §10.3.

6. Добавление мишени

6.1 Как снимать мишень

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

  • Снимайте перпендикулярно бумаге. Инструмент применяет единый равномерный масштабный коэффициент, выведенный из двух ваших калибровочных точек. Перспективу он не исправляет. Снимок, сделанный под углом, сжимает одну ось относительно другой, и эта ошибка уходит прямо в ваши показатели рассеивания, по горизонтали иначе, чем по вертикали. Встаньте перед мишенью, держите камеру перпендикулярно бумаге и заполните кадр листом.
  • Положите линейку в плоскость бумаги. Приклейте стальную линейку или напечатанную шкалу к лицевой стороне мишени до стрельбы либо положите её перед съёмкой. Линейка, поднесённая перед мишенью, ближе к камере, окажется крупнее бумаги и заставит ваши серии выглядеть меньше, чем они есть.
  • Берите длинную калибровочную базу. Ошибка калибровки — это процентная ошибка на каждом без исключения результате. Если вы калибруетесь по детали в 20 мм и промахнулись касанием на один пиксель, относительная ошибка будет куда больше, чем тот же пиксель люфта на базе в 200 мм. Берите самый длинный доступный элемент известной длины.
  • Ровный, рассеянный свет. Пробоины в бумаге — это тени. Жёсткий боковой свет превращает каждое отверстие в комету со светлым краем и тёмным хвостом, и вы в итоге отметите тень, а не пробоину.
  • Не уменьшайте чрезмерно. Приложение уменьшает очень крупные снимки для хранения, но вам нужно достаточно разрешения, чтобы пробоина при увеличении занимала уверенные несколько пикселей.

6.2 Импорт снимка

Добавить мишеньВыбрать фото… открывает выбор файла или камеры на вашем устройстве. После выбора файла вы получаете экран предварительного просмотра с тремя действиями:

  • Повернуть влево / Повернуть вправо — по 90° за раз. Учтите, что поворот сбрасывает выделение обрезки на полный кадр, потому что прямоугольник обрезки, нарисованный до поворота, после него указывает уже не на ту часть изображения.
  • Обрезка — тяните угловые маркеры внутрь. Оставьте их у краёв, чтобы сохранить весь снимок. Обрезать пустые части кадра стоит: это значит больше мишени на экране, когда вы приблизите изображение для разметки.
  • Использовать это фото — подтверждает. Поворот и обрезка применяются вместе, за один проход, к исходному снимку в полном разрешении, а не к уменьшенному предпросмотру, на который вы смотрели. Выбор файла сам по себе никогда не создаёт мишень; это делает только эта кнопка.

Подтверждение переводит вас прямо в рабочую область разметки.

Если файл не удаётся раскодировать, вы получите «Не удалось обработать это фото» — попробуйте другой формат (PNG и JPEG — безопасный выбор).


7. Разметка мишени

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

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

Всё перетаскивается. Нигде нет отдельного действия «подтвердить эту точку»: коснуться — значит поставить. Если точка легла чуть мимо, приблизьте изображение и перетащите её. Обе калибровочные точки, точка прицеливания активной серии и каждая её пробоина поправимы в любой момент.

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

7.1 Шаг 1 — Откалибровать масштаб

«Коснитесь снимка в первой калибровочной точке — конец линейки или элемент известной длины на мишени.»

Коснитесь один раз для первой точки, ещё раз для второй, затем введите истинную длину между двумя точками.

Вводите её в своих единицах. Подпись поля несёт «живой» суффикс единицы — «Истинная длина (мм)», «(см)» или «(in)» согласно вашему предпочтению малой длины, — так что положите на мишень шестидюймовую линейку при выбранных дюймах и просто введите 6. Никаких пересчётов, никакой арифметики, нечего перепутать. Значение переводится во внутренние миллиметры движка по пути в хранилище — именно поэтому смена предпочтения позже правильно покажет ту же самую линейку, а не испортит её.

Шаг поля и наименьшее принимаемое значение равны точности отображения этой единицы — 0,01 мм либо 0,001 см/in, — так что всё, что вам может быть показано, может быть и введено.

Калибровочная линия, нарисованная на снимке, подписана тем же значением в той же единице и отбрасывает лишние нули: линейка в 100 мм читается как «100 мм», а не «100,00 мм». Проверьте эту подпись, прежде чем идти дальше; это единственное число в проекте, по которому масштабируется всё остальное, и промах здесь масштабирует результаты целой мишени, не срыгивая никаких ошибок.

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

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

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

7.2 Шаг 2 — Точка прицеливания

«Коснитесь снимка, чтобы поставить точку прицеливания этой серии.»

Одно касание. Отмечайте то место, куда целились, а не то, куда легла серия. Рисуется красным перекрестием.

Постановка точки прицеливания сразу переводит на шаг пробоин.

7.3 Шаг 3 — Отметить пробоины

«Коснитесь снимка, чтобы зафиксировать каждую пробоину, — продолжайте тапать, чтобы добавить ещё.»

Отметьте каждую пробоину. Каждая рисуется пронумерованной точкой вашим настроенным цветом попаданий (Настройки → Цвет попаданий, общий с инструментом Вероятность попадания), обведённой двойной бело-тёмной каймой, чтобы оставаться видимой на любой части настоящей фотографии — на чёрном яблоке, на белой бумаге или на печати. Ограничения на серию нет.

Как только в серии окажется два и более выстрела, наложение проводит линию максимального разброса между двумя самыми далёкими пробоинами, подписывает её длину и отмечает среднюю точку попадания серии — её центр тяжести. Линия разброса тоже следует цвету попаданий, так что вся серия читается как единое целое.

Обе подписи на экране — длина разброса и зелёная калибровочная длина — даны в вашей настроенной единице малой длины.

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

Удалить пробоину переключает в режим удаления: «Коснитесь пробоины, которую хотите убрать, либо Отмена, чтобы оставить её.» Коснитесь метки выстрела, чтобы убрать его, Отмена — чтобы выйти из режима. Это отдельный режим, а не долгое нажатие или смахивание, именно потому, что изъятие выстрела из набора данных, который вы стараетесь держать честным, должно быть намеренным.

Кнопка Закончить отметку пробоин делает то, что на ней написано (возвращает всю эту механику в т.н. "состояние покоя").

7.4 Несколько серий на одной мишени

Из состояния покоя — «Выберите серию ниже, чтобы продолжить добавлять в неё выстрелы, либо добавьте новую серию» — вы получаете полосу вкладок, по одной на серию, каждая подписана своим номером и числом выстрелов.

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

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

7.5 Сохранить обзорное изображение серии

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

Выгруженное изображение — точная копия того, что на экране: тот же цвет попаданий, та же двойная кайма и обе подписи — разброс и калибровочная длина — в тех же единицах, на которые вы смотрите. Стоит помнить, если вы куда-то публикуете изображение, ведь у получателя нет способа узнать, какое предпочтение по единицам было включено при сохранении. Если изображение уходит к «имперской» аудитории, смените предпочтение до выгрузки.

Калибровочная линия включена сюда, хотя вид разметки показывает её только на самом шаге калибровки, — выгруженное изображение должно нести свидетельство собственного масштаба.

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

7.6 Когда мишень пригодна?

Мишень должна подходить под все три нижеследующих условия, прежде чем сможет войти в отчёт:

  1. завершённую калибровку (обе точки поставлены и введена ненулевая истинная длина),
  2. хотя бы одну серию с точкой прицеливания,
  3. хотя бы одну пробоину.

Мишень, которой не хватает чего-то из этого, несёт плашку Непригодно и подсказку, точно перечисляющую недостающее — «Требуется: калибровка, хотя бы 1 пробоина». Непригодные мишени молча исключаются из сводного отчёта; это не ошибка, просто ещё не законченная работа.


8. Отчёт о кучности

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

Строка под заголовком повторяет параметры проекта и объём выборки: дистанция, калибр, N выстрел(ов). Проверьте её. Если число выстрелов не то, которого вы ждали, где-то у вас непригодная мишень.

8.1 Единицы отображения результатов

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

  • ваша настроенная единица малой длины — вариант подписан настоящей единицей (мм, см или in, смотря что вы выставили), а не общим словом, так что вы с одного взгляда видите, что собираетесь читать. Это абсолютный, линейный размер по бумаге, показываемый с 2 знаками после запятой в мм и с 3 в см или дюймах.
  • мрад — миллирадианы, с 3 знаками.
  • МОА — угловые минуты, с 2 знаками.

Угловые единицы пересчитываются через собственную дистанцию проекта. Линейные единицы — это то, что реально измерено; угловые — те, в которых размечен барабанчик вашего прицела. Для сравнения винтовок, отстрелянных на разных дистанциях, берите угловые: серия в 20 мм на 100 м и серия в 40 мм на 200 м отличаются в два раза а абсолютных цифрах, но отражают одну и ту же (угловую) кучность.

8.2 Сводная диаграмма

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

Три элемента рисуются всегда и не выключаются:

  • Все пробоины — сведённые выстрелы, нарисованные вашим настроенным цветом попаданий (Настройки → Цвет попаданий; по умолчанию тёмный ягодный) с той же двойной бело-тёмной каймой, что и в виде разметки, чтобы точки оставались читаемыми там, где перекрывают друг друга или сетку. Образец цвета в легенде читает тот же источник и потому никогда не разойдётся с тем, что было нарисовано.
  • Точка прицеливания (красное перекрестие) — по построению в начале отсчёта,
  • Точка попадания (оранжевая) — сводный "центр тяжести" — средняя точка попадания, просчитанная по всем пробоинам проекта.

Цвет попаданий считывается в момент отрисовки, так что его смена в настройках проявится при следующей перерисовке диаграммы — в том числе в выгруженном SVG.

Всё остальное необязательно, и каждый необязательный элемент включается из столбца Показать на изображении таблицы Показатели (§8.4) или из Параметров изображения (§8.5). Переключение чего угодно обновляет диаграмму, легенду и выгружаемое изображение разом — что видите, то и выгружаете.

8.3 Что означают показатели

Каждое значение ниже показывается в том, на что выставлен переключатель Единицы отображения результатов (§8.1). Расчётные примеры здесь для наглядности записаны в миллиметрах; читайте их в своей единице.

Выстрелов — сколько выстрелов сведено. Это число значит больше всего, и именно его все хотят видеть меньшим, чем оно должно быть.

Доверительный интервал — выражен парой процентов, например -15%/+22%. Это 95-процентный доверительный интервал на саму оценку рассеивания. Читайте так: истинное рассеивание этой винтовки с 95 % уверенности лежит где-то между 15 % меньше и 22 % больше того числа, которое я вам показываю. Эта единственная строка — проверка на честность для всего остального на странице.

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

Соглашение — стрелковое: положительное Г — вправо, положительное В — вверх, ровно те направления, что размечены на ваших барабанчиках. Так что показание Г +6 мм, В -14 мм означает, что винтовка бьёт на 6 мм правее и на 14 мм ниже, а исправить это — значит уйти влево и вверх.

Доверительный интервал точки попадания — насколько хорошо вы на самом деле знаете это отклонение от нуля, в виде Г ±…, В ±…. Это то число, которое говорит, стоит ли трогать барабанчики. Если ваше смещение — 8 мм вниз, а доверительный интервал на нём ±11 мм, вы измерили не отклонение от нуля; вы измерили шум. Стреляйте дальше.

Среднеквадратичное отклонение (сигма, σ) — параметр рассеивания подогнанной модели. На станке напрямую не полезен, но именно из него выведены все радиусы ниже, и именно к нему относится доверительный интервал.

R50 — радиус круга с центром в точке попадания, содержащего 50 % выстрелов. Классически называется круговым вероятным отклонением (КВО). Это лучшее одиночное число для кучности винтовки: это медиана, значит, устойчивая, и это та форма, которую потребляет остальная часть приложения (§10.3).

R95 — радиус, содержащий 95 % выстрелов.

R99 — радиус, содержащий 99 % выстрелов. Остерегайтесь вычитывать отсюда слишком много: вы экстраполируете хвост подогнанной модели далеко за пределы того, где у вас есть данные, а модель предполагает, что отрывов не существует.

Доверительный интервал R95 — радиус R95 с собственной полосой неопределённости, показанной на диаграмме бледным кольцом конечной толщины, а не линией. Хороший элемент, чтобы оставить включённым: он делает неопределённость видимой геометрически, вместо того чтобы прятать её в таблицу.

ES5x — средний максимальный разброс, которого вам следует ожидать от серии в пять выстрелов из этой винтовки. ES10x — то же для десяти выстрелов.

Эти два заслуживают отдельного абзаца, потому что они — мост между этим инструментом и тем, как о кучности говорят все остальные. Если ваш проект говорит ES5x = 22 мм, это значит: если вы выйдете и отстреляете серии по пять выстрелов из этой винтовки, они будут в среднем 22 мм. Не «будут» — в среднем. Какие-то будут 14 мм, какие-то 32 мм, и именно та, что 14, попадёт в интернет. ES5x — честная версия того числа, которым вы собирались похвастаться, и она же позволяет сверить этот инструмент с вашими собственными прошлыми записями.

Ориентир 1 МОА — пунктирная окружность ровно в одну МОА диаметром на дистанции проекта, с подписанным реальным размером. Линейка для глаза: она превращает вопрос «это винтовка суб-МОА?» в такой, на который отвечают взглядом, а не вычислением.

8.4 Таблица "Показатели"

Все показатели выше в одной таблице: Описание, Обозначение, Значение и Показать на изображении. Флажок в последнем столбце добавляет этот элемент на диаграмму, в легенду и в выгружаемое изображение одновременно. У числа выстрелов, доверительного интервала и СТП флажка нет — первые два не геометричны, а точка попадания рисуется всегда.

8.5 Параметры изображения

  • Сохранить легенду вместе с изображением результатов (включено по умолчанию) — включает ли выгрузка SVG панель легенды и указатель достоверности, или это будет голая диаграмма. См. §8.7.
  • Сетка — необязательная опорная сетка с шагом 0,1 мрад, 0,05 мрад, 1/4 МОА или 1/8 МОА, либо никакой. Шаг угловой, так что его реальный размер вычисляется из дистанции проекта. Выставьте его на цену щелчка вашего прицела — и диаграмма станет читаться прямо в кликах барабанчика.
  • Пробоины в масштабе (включено по умолчанию) — рисует каждую пробоину в истинном диаметре канала ствола проекта вместо метки постоянного размера. Это честная отрисовка, и она же превращает хорошую винтовку на короткой дистанции в нечитаемое месиво перекрывающихся кругов. Выключайте, когда перекрытие мешает.
  • 1 МОА — описанная выше пунктирная опорная окружность.
  • Радиус вероятности попадания — ползунок от 0 % до 99 %. Потяните его, и на диаграмме появится тёмно-красная окружность радиусом, содержащим эту долю выстрелов. Показание даёт этот радиус сразу тремя способами — в вашей настроенной единице длины, в мрад и в МОА, — чтобы вы могли сопоставить его с размером цели, делением сетки прицела или шкалой барабанчика, ничего не пересчитывая вручную. Это практическая форма вопроса «насколько большой должна быть цель, чтобы я попадал по ней девять раз из десяти?» — и, наоборот, «какая доля моих выстрелов ложится в цель такого размера?» Это радиус, а не диаметр. У гонга в 100 мм радиус 50 мм: тяните ползунок, пока показание не скажет 50 мм, и читайте процент на ползунке. Забыть поделить пополам — самая лёгкая здесь ошибка, и льстит она вам изрядно.
  • Масштаб — масштабная линейка на диаграмме, чтобы выгруженное изображение читалось без легенды.

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

8.6 Уровень достоверности

Вертикальная шкала со стрелкой и, безусловно, важнейший элемент страницы.

Она отвечает на один вопрос: отстрелял ли я достаточно, чтобы вообще что-то утверждать? Положение стрелки задаётся шириной доверительного интервала на оценке рассеивания — узкий интервал, высокая стрелка. Полоса разбита на зоны, снизу вверх: ЕРУНДА, ПЛОХО, СРЕДНЕ, ХОРОШО, ОТЛИЧНО, с пунктирной чертой у верхнего края зоны ЕРУНДА, подписанной с характерной для этого инструмента сдержанностью: «(порог туфты)».

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

Панель рядом со шкалой даёт словесную оценку, уровень доверия по шкале от 0 до 4 с плюсами и доверительный интервал в виде общего процента плюс две его границы.

И вот во что это обходится в патронах. Эти цифры точны, и они — свойство математики, а не вашей винтовки: хорошая винтовка не набирает достоверность быстрее плохой:

ВыстреловДовер. интервалσ известна доУровеньОценка
3227 %−40 % … +187 %0Вздор
5124 %−32 % … +92 %0Вздор
1072 %−24 % … +48 %0Вздор
1556 %−21 % … +35 %0Вздор
1949 %−19 % … +30 %1Едва ли значимо
2245 %−18 % … +27 %1+Плохо
2740 %−16 % … +24 %2Средне
3535 %−14 % … +20 %2+Выше среднего
4630 %−13 % … +17 %3Хорошо
6525 %−11 % … +14 %3+Очень хорошо
9920 %−9 % … +11 %4Отлично

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

Отсюда же следует, что единственный вывод, который можно сделать из единичной серии из 3 выстрелов, запощенной на интернете — это вывод о [без]грамотности или же интеллектуальной [не]чистоплотности постящего.

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

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

8.7 Выгрузка

Сохранить изображение (рядом с заголовком Сводные результаты) записывает диаграмму как SVG — вектор, поэтому масштабируется до любого размера без пикселизации. При включённом Сохранить легенду вместе с изображением результатов выгруженный файл несёт строку заголовка с названием проекта, дистанцией, калибром и числом выстрелов; полную панель легенды; и отрисовку указателя достоверности, так что изображение самодостаточно и не может быть процитировано в отрыве от собственной неопределённости. Выгрузка создаётся заново на белом фоне, поэтому печатается и вставляется в документы чисто, независимо от того, какую тему приложения вы используете.

Экспорт CSV записывает сырые координаты каждого сведённого выстрела, по строке на выстрел:

СтолбецЗначение
ShotRight (мм)смещение по горизонтали от точки прицеливания своей серии, положительное вправо
ShotUp (мм)смещение по вертикали от точки прицеливания своей серии, положительное вверх
Targetназвание мишени
Groupномер серии внутри её мишени
Distance (м)дистанция проекта
Descriptionназвание проекта

Каждый столбец называет и своё направление, и свою единицу. Выставьте дюймы и ярды — и заголовки станут ShotRight (in), ShotUp (in), Distance (yd), а значения пересчитаются соответственно: координаты с точностью вашей малой длины (2 знака в мм, 3 в см или дюймах), дистанция — с точностью своей группы. Файл тем самым говорит о своём смысле открыто: ничего в нём не нужно помнить, искать или выводить из настроек, которые случайно были включены в момент записи. Названия столбцов остаются английскими независимо от языка приложения, поскольку это идентификаторы для того инструмента, куда файл направляется.

Переключатель Единицы отображения результатов до CSV не дотягивается. Он может выразить показатели угловым образом, в мрад или МОА, но здесь сырые координаты, а они всегда длина.

Смена формата. Эти столбцы прежде назывались ShotX и ShotY, причём ShotY был положительным вниз — противоположно ShotUp. Переименование сделано намеренно: таблица, ссылавшаяся на ShotY по имени, теперь сломается заметно, а не станет молча читать перевёрнутые числа. Если у вас есть сохранённые выгрузки, они в старом соглашении; чтобы сравнить их с новым файлом, поменяйте знак их ShotY.

Разделители полей и десятичный разделитель следуют вашим настройкам в Настройки → Экспорт CSV, так что файл чисто открывается в той табличной локали, которой вы пользуетесь, — это управляет форматированием чисел независимо от единиц выше. Это запасной выход: если вы хотите провести собственный анализ, подогнать собственную модель или проверить арифметику инструмента — вот ваши сырые данные.


9. Резервное копирование, восстановление и управление данными

Хранилище инструмента живёт в вашем браузере. Делайте резервные копии.

  • Сделать резервную копию в файл (для проекта) — один проект, самодостаточный.
  • Сделать резервную копию библиотеки в файл… — диалог, где вы выбираете, какие проекты включить, и затем единый файл JSON со всеми ними.
  • Загрузить резервную копию из файла… — импортирует ранее сохранённый файл.

Фотографии путешествуют внутри файла резервной копии, отчего эти файлы объёмны, но по-настоящему полны: восстановленный проект полностью доступен для повторной разметки и повторного анализа.

Разрешение конфликтов при импорте

Импортируемые проекты сопоставляются с вашей существующей библиотекой по названию, без учёта регистра и пробелов. Там, где название совпадает, вы выбираете, как разрешить:

  • Перезаписать — импортируемая версия заменяет существующую.
  • Перезаписать, если новее — заменяет только если метка времени изменения импортируемого проекта позже, чем у существующего; иначе он пропускается. Безопасный выбор при слиянии двух устройств.
  • Переименовать — импортирует как копию с названием «<название> — копия (1)», и так далее.

Импорт сообщает, сколько записей сохранено и сколько пропущено. Если файл не является корректным JSON или является корректным JSON, но не выгрузкой кучности, вы получите конкретную ошибку, а не молчаливое бездействие.


10. Применение на практике

10.1 Подбор навесок / глубины посадки в процессе релода

Соблазн — отстрелять по серии из трёх выстрелов на каждую навеску, выбрать наименьшую и объявить узел. Таблица в §8.6 говорит вам ровно, чего стоит такая процедура: при трёх выстрелах оценка рассеивания растянута примерно впятеро. Вы отбираете шум.

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

  1. Один проект на снаряжение. Названия одинаковы, кроме варьируемого параметра, чтобы список проектов сортировался осмысленно.
  2. Отстреливайте каждое снаряжение многократно, за несколько выходов, добавляя мишени в его проект по ходу дела.
  3. Следите за плашкой достоверности в списке проектов. Стреляйте, пока каждый кандидат не выйдет хотя бы из зоны Вздор, а лучше — до Средне.
  4. Сравнивайте снаряжения по R50 вместе с его доверительным интервалом, а не по одному лишь R50.

Правило решения простое и строгое: если доверительные интервалы двух снаряжений перекрываются, вы не показали, что они различны. Они вполне могут различаться — но не по вашим данным. Либо стреляйте больше, либо признайте, что различить их не можете, и выбирайте по другому основанию (постоянство скоростей, доступность компонентов, чего у вас и так ящик).

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

10.2 Пристрелка

СТП и её доверительный интервал — вот инструменты пристрелки, и именно интервал люди пропускают.

Правило: не крутите барабанчики, пока доверительный интервал точки попадания не станет меньше поправки, которую вы собираетесь внести, — а в идеале меньше одного щелчка барабанчика на вашей дистанции. Если ваша СТП показывает 12 мм вниз ±15 мм, крутить — всё равно что бросать монетку, сдвигая ноль туда, где вы не измеряли. Стреляйте больше, смотрите, как интервал сжимается, и внесите поправку один раз.

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

Знаки — те же, что на крышках ваших барабанчиков: положительное В вверх, положительное Г вправо, — так что поправка есть показание с обратным знаком: СТП в В -14 мм требует 14 мм вверх.

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

10.3 Как это питает остальной пакет

Задать как точность патрона… в строке проекта передаёт его измеренную кучность патрону в Арсенале. Диалог перечисляет каждый проект с вычислимыми показателями, показывая для каждого сводный R50 в мрад и МОА вместе с плашкой достоверности, чтобы вы видели, на что подписываетесь. Выбор одного из них записывает этот R50 в выбранный патрон.

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

Арсенал хранит кучность внутри как R50 в мрад, но принимает ввод в том соглашении, которое вам удобнее назвать, — R50, R95, R99, ES5 или ES10, — автоматически переводя в R50 (§11.7). Если вы вводите число вручную, а не выбираете проект, пользуйтесь тем соглашением, которое действительно измеряли.

10.4 Проверка собственного снаряжения на здравый смысл

Два быстрых применения, вытекающих из чисел:

Соответствует ли кратность моего прицела моей винтовке? Прицел помогает лучше видеть, но не помогает лучше стрелять. Если R95 винтовки находится в пределах ~1-1.5MOA, прицел с кратностью 12x или 15x совершенно достаточен, чтобы комфортно выцелить самую маленькую мишень, по которой можно уверенно попасть (это ещё до ветра, расстояния, разброса дульных, и прочих факторов ошибки, что накладываются поверх). Большая кратность может быть полезна для других применений — идентификация цели, наблюдение, чтение ветра, etc. — но надо понимать, что для собственно прицеливания — это мёртвый вес, кратность избыточна, и деньги на неё потраченные можно вложить во что-нибудь полезное.

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


11. Отрада зануды: модель и математика

Всё нижеследующее — то, что инструмент действительно вычисляет, с выводами. Для пользования инструментом читать это не обязательно, но на самом деле — это самая интересная часть инструмента.

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

11.1 Лежащая в основе модель

Инструмент предполагает, что горизонтальное и вертикальное отклонения выстрела, отмеренные от истинного центра серии, суть независимые нормальные случайные величины с нулевым средним и одинаковой дисперсией σ²:

x𝒩(0,σ2),y𝒩(0,σ2),xyx \sim \mathcal{N}(0, \sigma^2), \qquad y \sim \mathcal{N}(0, \sigma^2), \qquad x \perp y

Это стандартная круговая нормальная (изотропная двумерная нормальная) модель рассеивания выстрелов. Её следствие в том, что радиальное отклонение r=x2+y2r = \sqrt{x^2 + y^2} подчиняется распределению Рэлея с параметром σ:

f(r)=rσ2exp(r22σ2),F(r)=1exp(r22σ2)f(r) = \frac{r}{\sigma^2} \exp\left(-\frac{r^2}{2\sigma^2}\right), \qquad F(r) = 1 — \exp\left(-\frac{r^2}{2\sigma^2}\right)

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

Допущения, по-честному. Модель изотропна: она предполагает, что вертикальное и горизонтальное рассеивание равны. Реальные винтовки часто это нарушают — вертикальная растяжка от разброса скоростей классический случай, горизонтальная от ветра другой. Модель ничего не предусматривает для отрывов, для гетероскедастичной смеси и для центра серии, кочующего между выходами (нагрев ствола, омеднение, ползущие сошки). Тем не менее это верное умолчание: у неё один параметр, значит сходится она максимально быстро, а её пределы видны невооружённым глазом на диаграмме рассеяния. Если ваше сводное облако явно эллипс, а не круг, то показанная вам σ — компромисс между двумя разными числами, и это стоит иметь в виду.

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

11.2 Сведение

Для каждого выстрела ii в серии gg на мишени TT:

  1. Выстрел и точка прицеливания его серии хранятся как доли собственных пиксельных размеров снимка, в [0,1]2[0,1]^2. В натуральные пиксели они переводятся умножением на ширину и высоту снимка.
  2. Масштаб мишени sTs_T (пкс/мм) берётся из её калибровочной линейки: где числитель — пиксельное расстояние между двумя калибровочными точками, а LистL_{\text{ист}} — введённая вами длина, в мм.
  3. Пиксельные координаты делятся на sTs_T, что даёт миллиметры.
  4. Выстрел перецентрируется на точку прицеливания своей серии:

Хранение положений как долей снимка, а не как миллиметров, и есть то, что делает возможной перекалибровку задним числом: поправка линейки спустя месяцы автоматически пересчитывает каждую пробоину этой мишени. Это же делает инструмент безразличным к единицам по построению — у сохранённого выстрела нет вообще никакой единицы, только положение на изображении. Миллиметры впервые появляются на шаге 2, через LистL_{\text{ист}}, которая и сама переведена из той единицы, в которой вы её ввели; дальше вся цепочка метрическая, а ваши предпочтённые единицы возникают вновь лишь тогда, когда готовое число печатается.

Система координат. Начало долей снимка — левый верхний угол изображения, а его вертикальная ось растёт вниз, поэтому сведённые yiy_i положительны ниже точки прицеливания. Движок намеренно сохраняет эту систему насквозь: она же система SVG, и именно это позволяет диаграмме рисовать сведённые выстрелы, окружности радиусов, сетку и рамку точки попадания прямо из этих миллиметров, вовсе без преобразования.

На показатели рассеивания это никак не влияет. Каждая величина начиная с §11.3 зависит от yy только через квадраты отклонений от среднего, а они инвариантны к смене знака. Это существенно лишь для единственной знаковой величины, о которой сообщает инструмент, — вертикального отклонения от нуля, — которую человек читает, стоя перед барабанчиком, и которая потому должна быть положительной вверх.

Это преобразование происходит ровно в одном месте — во вспомогательной функции toShooterFrame(), отображающей (x,y)(x,y)(x, y) \mapsto (x, -y), через которую проходят все три человекочитаемых пути: СТП в таблице Показатели, строка точки попадания в легенде (а с ней и легенда выгружаемого SVG) и столбец ShotUp в CSV. Отрисовщик её обходит, потому что картинка и так всегда была верной.

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

Сводная выборка — объединение этих перецентрированных выстрелов по всем сериям и всем мишеням. Каждая мишень вносит вклад через собственный масштабный коэффициент, и именно поэтому снимки, сделанные с разных расстояний, объединяются правильно.

Границы. Меньше 3 сведённых выстрелов возвращает tooFewShots; больше 1000 возвращает tooManyShots. Сырой сводный список возвращается в любом случае, так что экспорт CSV работает даже тогда, когда показатели — нет.

11.3 Оценка σ

Пусть nn — число сведённых выстрелов, а (x,y)(\bar{x}, \bar{y}) — центр тяжести выборки. Поосевые выборочные дисперсии используют знаменатель с поправкой Бесселя n1n-1:

vx=1n1i(xix)2,vy=1n1i(yiy)2v_x = \frac{1}{n-1}\sum_i (x_i — \bar{x})^2, \qquad v_y = \frac{1}{n-1}\sum_i (y_i — \bar{y})^2

и усредняются, поскольку модель утверждает, что они оценивают одну и ту же величину:

v=vx+vy2v = \frac{v_x + v_y}{2}

Однако v\sqrt{v} не является несмещённой оценкой σ, хотя vv несмещённа для σ². Квадратный корень вогнут, поэтому по неравенству Йенсена E[v]<E[v]=σE[\sqrt{v}] < \sqrt{E[v]} = \sigma: наивная оценка смещена вниз, и тем сильнее, чем меньше выборка. Инструмент исправляет это в точности.

В рамках модели kvσ2χk2\dfrac{k \, v}{\sigma^2} \sim \chi^2_k с

k=2(n1)k = 2(n-1)

степенями свободы — по две на выстрел, минус две на оценённый центр тяжести. Математическое ожидание корня из хи-квадрат величины известно в замкнутом виде,

E[χk2]=2Γ(k+12)Γ(k2)E\left[\sqrt{\chi^2_k}\right] = \sqrt{2}\,\frac{\Gamma\!\left(\frac{k+1}{2}\right)}{\Gamma\!\left(\frac{k}{2}\right)}

что даёт множитель устранения смещения

cn=k2Γ(k2)Γ(k+12),k=2(n1)c_n = \sqrt{\frac{k}{2}} \cdot \frac{\Gamma\!\left(\frac{k}{2}\right)}{\Gamma\!\left(\frac{k+1}{2}\right)}, \qquad k = 2(n-1)

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

σ^=cnv\boxed{\hat{\sigma} = c_n \sqrt{v}}

Это точный аналог поправочного множителя c4c_4 из статистического управления процессами, обобщённый на 2(n1)2(n-1) степеней свободы. Множитель поставляется предвычисленной таблицей, проиндексированной по nn от 2 до 1000, и совпадает с замкнутой формой выше во всех десяти хранимых знаках после запятой, в каждой записи:

n2351020501001000
cnc_n1,12841,06381,03171,01401,00661,00261,00131,0001

При n=2n=2 поправка составляет 12,8 %, и это не мелочь округления — неисправленная оценка по двум выстрелам занижает рассеивание на одну восьмую. При n=20n=20 она уже ниже 1 %, а при n=100n=100 косметическая, но стоит она одного обращения к таблице, так что нет причин не быть точным.

11.4 Доверительный интервал на σ

Тот же хи-квадрат пивот, использованный в обратную сторону. При k=2(n1)k = 2(n-1),

Pr(χ0.025,k2kvσ2χ0.975,k2)=0.95\Pr\left(\chi^2_{0.025,k} \le \frac{k\,v}{\sigma^2} \le \chi^2_{0.975,k}\right) = 0.95

Перегруппировка относительно σ² и извлечение корней дают двусторонний 95-процентный интервал, выраженный множителями на точечную оценку:

λlo=kχ0.975,k2,λhi=kχ0.025,k2\boxed{\;\lambda_{\text{lo}} = \sqrt{\frac{k}{\chi^2_{0.975,k}}}, \qquad \lambda_{\text{hi}} = \sqrt{\frac{k}{\chi^2_{0.025,k}}}\;}

так что интервал есть [λloσ^, λhiσ^][\lambda_{\text{lo}}\hat\sigma,\ \lambda_{\text{hi}}\hat\sigma]. Инструмент хранит в своих таблицах границы отношения дисперсий k/χ2k/\chi^2 и берёт корень при использовании; множитель устранения смещения и v\sqrt{v} алгебраически сокращаются в отношении, поэтому множители зависят только от nn и вовсе не зависят от ваших данных. Сверенная с точными хи-квадрат квантилями, каждая запись таблицы совпадает до семи знаков после запятой.

Доверительный интервал, показываемый в интерфейсе, — это просто λhiλlo\lambda_{\text{hi}} — \lambda_{\text{lo}}, а показываемые проценты суть (λlo1)(\lambda_{\text{lo}} — 1) и (λhi1)(\lambda_{\text{hi}} — 1).

Асимметрия при малых nn жестокая, и в ней математическое сердце §8.6. При n=5n=5: λlo=0.676\lambda_{\text{lo}} = 0.676, λhi=1.916\lambda_{\text{hi}} = 1.916. Ваша оценка по пяти выстрелам совместима с истинным рассеиванием в две трети от измеренного и ровно настолько же совместима с почти вдвое большим. При n=2n=2 верхний множитель равен 39.5=6.28\sqrt{39.5} = 6.28.

Интервал сужается как O(1/n)O(1/\sqrt{n}) — обычным, безжалостным темпом. Вдвое сузить его стоит вчетверо больше патронов.

11.5 Радиусы кучности

Каждый радиус — обратная функция распределения Рэлея при соответствующей вероятности. Положив F(r)=pF(r) = p и решив:

rp=σ2ln(1p)r_p = \sigma\sqrt{-2\ln(1-p)}

что прямо даёт приводимые константы:

ПоказательВыводМножитель на σИспользуется
R50 (КВО)2ln2\sqrt{2\ln 2}1,177411,18
R952ln0.05\sqrt{-2\ln 0.05}2,447752,45
R992ln0.01\sqrt{-2\ln 0.01}3,034853,03

R50 — это медиана распределения Рэлея, и потому именно она предпочтительная главная цифра: это самый устойчивый квантиль распределения и наименее чувствительный к допущениям модели о хвостах.

Интерактивный ползунок вероятности попадания — та же формула, вычисляемая непрерывно. Для процента pp он считает

r=σln((1p/100)2)=σ2ln(1p/100)r = \sigma\sqrt{-\ln\left((1 — p/100)^2\right)} \;=\; \sigma\sqrt{-2\ln(1 — p/100)}

— обе формы алгебраически тождественны. Ползунок ограничен 99 %, потому что p=100p = 100 отправляет логарифм в бесконечность.

Доверительный интервал R95, рисуемый на диаграмме, есть [λloR95, λhiR95][\lambda_{\text{lo}} R_{95},\ \lambda_{\text{hi}} R_{95}] — интервал σ, пронесённый через линейное масштабирование, что точно, поскольку R95R_{95} пропорционален σ.

11.6 Ожидаемый максимальный разброс — ES5x и ES10x

Максимальный разброс — это наибольшее попарное расстояние среди nn выстрелов:

ESn=maxi<jpipj\text{ES}_n = \max_{i<j} \lVert p_i — p_j \rVert

Это диаметр выпуклой оболочки выборки, и для двумерного нормального распределения при n>2n>2 он не имеет пригодной замкнутой формы. Его математическое ожидание получено численно (интегрированием Монте-Карло на больших выборках круговой нормали) и линейно по σ в силу масштабной инвариантности:

E[ES5]=3.06σ,E[ES10]=3.79σE[\text{ES}_5] = 3.06\,\sigma, \qquad E[\text{ES}_{10}] = 3.79\,\sigma

Это и есть величины ES5x и ES10x. Отметьте их важнейшее свойство: это математические ожидания, а не границы. Максимальный разброс одиночной серии сам является случайной величиной с изрядным собственным разбросом — что ровно и есть причина, по которой он никудышная оценка и по которой этот инструмент даёт себе труд им не пользоваться.

Обратите внимание и на вид зависимости. Переход с 5 на 10 выстрелов в серии увеличивает ожидаемый размер серии на 24 % единственно потому, что вы дали выборке больше возможностей породить крайнюю пару, без малейшего изменения самой винтовки. Это и есть механизм, благодаря которому «моя винтовка кладёт полминутные серии» и «моя винтовка кладёт минутные серии» могут быть оба истинными утверждениями об одной и той же винтовке, различаясь лишь тем, сколько выстрелов говорящий делает перед замером. Максимальный разброс — свойство не винтовки; это свойство винтовки и объёма выборки, и называть его без второго бессмысленно.

Поскольку разброс растёт с nn, а σ, R50 и R95 — нет, сопоставимы между стрелками только последние. Вот довод в пользу R50 одной фразой.

11.7 Пересчёт между соглашениями

Ради совместимости с остальным пакетом — Арсенал хранит кучность как R50 в мрад — любое соглашение переводится в σ делением на свой множитель из §11.5, а σ переводится в R50 умножением на 1,1774. ES5 и ES10 делятся на 3,06 и 3,79 соответственно. Так, например, винтовка, заявленная как минутная по десяти выстрелам, имеет

σ=1.03.79=0.264 МОАR50=1.1774×0.264=0.311 МОА\sigma = \frac{1.0}{3.79} = 0.264\ \text{МОА} \quad\Rightarrow\quad R_{50} = 1.1774 \times 0.264 = 0.311\ \text{МОА}

что полезно уметь считать в уме в оружейном магазине.

11.8 Доверительный интервал на точку попадания

Задача, отличная от интервала рассеивания, и пивот другой. Сводный центр тяжести (x,y)(\bar{x}, \bar{y}) оценивает истинный центр серии; его неопределённость — стандартная ошибка среднего, а это для нормальной совокупности с неизвестной дисперсией задача о распределении Стьюдента:

ДИx=tq,n1vxn,ДИy=tq,n1vyn\text{ДИ}_x = t_{q,\,n-1} \cdot \frac{\sqrt{v_x}}{\sqrt{n}}, \qquad \text{ДИ}_y = t_{q,\,n-1} \cdot \frac{\sqrt{v_y}}{\sqrt{n}}

Заметьте, что поосевые дисперсии vxv_x и vyv_y используются здесь раздельно, а не сведённое среднее vv, — поэтому доверительный интервал точки попадания по-настоящему эллиптичен и честно сообщит, что у винтовки, тянущей по вертикали, горизонталь известна лучше вертикали. (Оценка рассеивания из §11.3 их сводит; оценка точки попадания — нет. Это намеренно: допущение изотропии есть модельный выбор для радиальных квантилей, но навязывать его простому среднему нет причин.)

Квантиль берётся при

q=10.054=0.9875q = 1 — \frac{0.05}{4} = 0.9875

а не при наивных 0,975. Это поправка Бонферрони по двум осям: показываемый интервал есть совместная 95-процентная область по горизонтали и вертикали одновременно, поэтому каждой оси отводится α/2 = 0,025 общей ошибки, разделённые двусторонне по 0,0125 на хвост. Взять 0,975 на ось означало бы два маргинальных 95-процентных интервала, чьё совместное покрытие составило бы лишь около 90 %. Сверенная с точными квантилями t при q=0.9875q = 0.9875 и n1n-1 степенях свободы, поставляемая таблица совпадает до пяти знаков после запятой повсюду.

Интервал рисуется на диаграмме пунктирной рамкой вокруг метки точки попадания.

11.9 Шкала указателя достоверности

Шкала отображает доверительный интервал c=λhiλloc = \lambda_{\text{hi}} — \lambda_{\text{lo}} в положение стрелки и отдельно — в один из восьми дискретных уровней.

Дискретный уровень — это проход по порогам

[0.5, 0.45, 0.4, 0.35, 0.3, 0.25, 0.2, 0][0.5,\ 0.45,\ 0.4,\ 0.35,\ 0.3,\ 0.25,\ 0.2,\ 0]

возвращающий индекс первого порога, который cc превосходит: уровень 0 («Вздор») при c>0.5c > 0.5, уровень 7 («Отлично») при c0.2c \le 0.2. Уровни подписаны по шкале от 0 до 4 с плюсами: 0, 1, 1+, 2, 2+, 3, 3+, 4.

Непрерывное положение стрелки ϕ[0,1]\phi \in [0,1] — кусочно-линейное отображение из двух частей, ограниченное с обоих концов и смыкающееся ровно при c=0.5c = 0.5:

ϕ={(1.5c)0.2c>0.51(c0.2)83c0.5\phi = \begin{cases} (1.5 — c) \cdot 0.2 & c > 0.5 \\[4pt] 1 — (c — 0.2)\cdot\frac{8}{3} & c \le 0.5 \end{cases}

Проверьте стык: при c=0.5c = 0.5 верхняя ветвь даёт (1.50.5)×0.2=0.2(1.5-0.5)\times 0.2 = 0.2, а нижняя — 10.3×8/3=0.21 — 0.3 \times 8/3 = 0.2. Непрерывно.

Следствие для оформления в том, что нижние 20 % шкалы — зона «ЕРУНДА», всё ниже порога туфты при c=0.5c = 0.5 — вбирают весь диапазон c(0.5,1.5]c \in (0.5, 1.5], тогда как верхние 80 % растягивают диапазон c(0.2,0.5]c \in (0.2, 0.5] на шесть значимых границ уровней. Иначе говоря, шкала намеренно сжимает область, где ваши данные ничего не стоят, в одну зрительную зону и тратит своё разрешение там, где различия важны. Серия из 3 выстрелов (c=2.27c = 2.27) и серия из 10 (c=0.72c = 0.72) обе сидят у самого низа, и правильно: ни та, ни другая ничего вам не говорит, и шкала отказывается льстить разнице между ними.

Порог при c=0.5c = 0.5 соответствует n=19n = 19. Таково обдуманное мнение инструмента о минимальном объёме выборки для защитимого утверждения о кучности, и оно выведено, а не постулировано.

11.10 Угловой пересчёт

Угловые результаты используют общие точные пересчёты пакета, а не обычные полевые приближения. Обе единицы переводятся через свою точную меру в радианах: один миллирадиан стягивает ровно 1/10001/1000 дистанции, а одна угловая минута стягивает

1=π10800=2.908882×104 рад1' = \frac{\pi}{10800} = 2.908882 \times 10^{-4}\ \text{рад}

то есть 0,29089 мм на метр дистанции, или 1,0472 дюйма на 100 ярдов — а не «1 дюйм» стрелковой присказки. Эта присказка несёт ошибку в 4,7 %, что больше разницы между многими снаряжениями, которые люди пытаются различить.

θмрад=dммдистанциям,θМОА=dмм0.29089дистанциям\theta_{\text{мрад}} = \frac{d_{\text{мм}}}{\text{дистанция}_{\text{м}}}, \qquad \theta_{\text{МОА}} = \frac{d_{\text{мм}}}{0.29089 \cdot \text{дистанция}_{\text{м}}}

Шаги сетки, предлагаемые в Параметрах изображения (0,1 мрад, 0,05 мрад, 1/4 МОА, 1/8 МОА), получают свой реальный шаг в миллиметрах вычисленным из собственной дистанции проекта в тот момент, когда вы их выбираете, и потому сетка остаётся истинным угловым ориентиром независимо от того, на какой дистанции вы стреляли.

11.11 Численные замечания

  • Поиск максимального разброса — полный перебор за O(n2)O(n^2) по парам внутри серии. Серии малы; диаметр оболочки методом вращающихся штангенциркулей был бы асимптотически лучше, но практически пофиг.
  • Таблицы (cnc_n, оба хи-квадрат множителя, квантили t) поставляются предвычисленными для n=21000n = 2 \ldots 1000, а не вычисляются во время работы. Это точные статистические константы, аналитически сверенные, как задокументировано выше, и их поставка избавляет от необходимости тащить библиотеку специальных функций для гаммы и неполной беты в браузерную сборку.
  • Потолок в 1000 выстрелов — граница таблицы, а не алгоритмический предел. Если вы отстреляли больше тысячи патронов в один проект, вы заслужили право его разделить.

12. Происхождение и лицензия

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

Новое здесь — структура вокруг: иерархия проект/мишень/серия с калибровкой на каждую мишень вместо единой плоской модели в пиксельных координатах, перекалибровка задним числом, разметка с подгонкой перетаскиванием, постоянное хранение с резервным копированием и слиянием, выгрузка в SVG и CSV и встроенность в остальной баллистический пакет.

Пакет распространяется по лицензии AGPL-3.0-or-later. Унаследованный код TARAN, от которого он происходит, — под GPLv3, © 2015 я же.


Мирный. Точный. Заряженный.

geladen.ch ballistics Руководство пользователя — Целкометр
Пролистать наверх