Pull to refresh

Comments 20

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

Вы все эти стрелочки и т.п. тоже тупо замоделили, или есть какая-то тулза, которая позволяет сделать их быстро и красиво?
Не — ничего специального не использовал. Просто нарисовал в Word и Blender
Понятно, спасибо.
Помнится, когда я играл в colobot реализовывал что-то подобное, но вычисления вроде были попроще.
Надо бы найти исходники.
Там оси вращения башни и ось стрельбы оружия пересекались в одной точке. Здесь же нужно учитывать смещение ствола и осей друг относительно друга. Соответственно, вместо некоторых величин там просто нули.
Вы серьезно? Я год изучал авиационные прицелы, а вы тут одной статьей все описали?
Для любого, кто знаком с линейной алгеброй тут просто ничего нового) Сложение векторов и переход между системами координат.
На вскидку — если вы уж целитесь из пушки, то будьте добры учитывать хотя бы какие-то элементы, а не только то, что ствол у вас вынесен. Вот минимум, который желательно было бы учесть, чтобы это могло походить на адекватную статью:
а. силя притяжения (понижение снаряда в литературе называется)
б. гипотеза о движении цели (базовых четыре — равномерное, с постоянным ускорением, по кругу и по спирали)
в. устойчивость системы тоже не помешает, но это уже больше не к прицелу требования.

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

Ну и в конце концов, в реальности никто не будет ставить пушку подобным образом, потому что при выстреле будут слишком большие моменты, пытающиеся повернуть башню. Это не оправдано. В крайнем случае, их поставят симметрично, а тогда все упрощается.
Впрочем, вы заставили меня хорошенько задуматься, и вот какое я решение придумал (оно схоже с вашим, но не делает лишних допущений, типа z строго положителен и не требует расчета точки E, что тоже не простая задача)
b = b' — (180 — a — g),
где b — ваш бетта (на который нужно повернуть) b' — начальный угол между направлением на цель и AB, a — ваш альфа, g — гамма
g = arcsin( sin (a) * AB / r), r — радиус-вектор цели.

Формула в вольфрам-альфа тут

Появилась идея написать небольшую статью о алгоритмах, задачах и проблемах в реальных прицелах (правда несколько устаревших), которая может помочь кому-нибудь создавать более правдоподобные модели стрельбы в играх или типа того. Будет ли кому-нибудь интересно?
Серьезно! И вот почему.

Статья не писалась ради статьи. Показанные расчеты использовались при разработке аркадной игры. Именно аркадной. Срок проекта подходит к концу, бюджет тоже, все почти готово. Игра не предполагает серьезной физики. Подошла бы даже более простая модель, когда направляющая выстрела и все оси поворота пересекаются в одной точке. Подвела лазерная пушка — видимый луч от пушки до цели выдавал халтуру. После внесенных корректировок все заработало четко. У врагов нет шансов. Я представляю, как прихожу на работу и предлагаю переделать аркаду в симулятор, и пусть весь мир подождет…

Серьезности добавляет еще один момент. Подобных задачек я не решал очень давно. Потому изначально решение было в несколько раз длиннее и запутаннее показанного в статье. Именно написание поста позволило упростить реализацию и даже исключить из нее пару ошибок. Т.е статья уже пригодилась как минимум мне самому. Если поможет еще кому-то — серьезность только увеличится.

К тому же в самом начале (до кнопки «читать дальше») я честно указал, что симулятора не будет. Это должно было предупредить людей, реально разбирающихся в физике вопроса. Честное слово, хотелось копнуть глубже, но сроки и деньги неумолимы(
Sign up to leave a comment.

Articles