Баллистика как вывести формулы

Баллистика как вывести формулы

Цель работы: изучение движения тела, брошенного под углом к горизонту; определение времени, дальности и высоты полета.

Если тело бросить под углом к горизонту, то в полете на него действуют сила тяжести и сила сопротивления воздуха. Если силой сопротивления пренебречь, то остается единственная сила – сила тяжести. Поэтому вследствие 2-го закона Ньютона тело движется с ускорением, равным ускорению свободного падения ; проекции ускорения на координатные оси равны ах = 0, ау = -g.

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

Проекции скорости тела, следовательно, изменяются со временем следующим образом:

где – начальная скорость, α – угол бросания.

Координаты тела, следовательно, изменяются так:

При нашем выборе начала координат начальные координаты (рис. 1) Тогда

(1)

Проанализируем формулы (1). Определим время движения брошенного тела. Для этого положим координату y равной нулю, т.к. в момент приземления высота тела равна нулю. Отсюда получаем для времени полета:

. (2)

Второе значение времени, при котором высота равна нулю, равно нулю, что соответствует моменту бросания, т.е. это значение также имеет физический смысл.

Дальность полета получим из первой формулы (1). Дальность полета – это значение координаты х в конце полета, т.е. в момент времени, равный t0. Подставляя значение (2) в первую формулу (1), получаем:

. (3)

Из этой формулы видно, что наибольшая дальность полета достигается при значении угла бросания, равном 45 градусов.

Наибольшую высоту подъема брошенного тела можно получить из второй формулы (1). Для этого нужно подставить в эту формулу значение времени, равное половине времени полета (2), т.к. именно в средней точке траектории высота полета максимальна. Проводя вычисления, получаем

. (4)

Из уравнений (1) можно получить уравнение траектории тела, т.е. уравнение, связывающее координаты х и у тела во время движения. Для этого нужно из первого уравнения (1) выразить время:

и подставить его во второе уравнение. Тогда получим:

Это уравнение является уравнением траектории движения. Видно, что это уравнение параболы, расположенной ветвями вниз, о чем говорит знак «-» перед квадратичным слагаемым. Следует иметь в виду, что угол бросания α и его функции – здесь просто константы, т.е. постоянные числа.

Источник

Баллистическое движение

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

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

Основные формулы, определяющие баллистическое движение:
, ,

Формулы выводятся из формул для скорости и расстояния при равноускоренном движении, в предположении, что по оси х на тело не действует никакое ускорение, а по оси y на тело действует ускорение свободного падения g.

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

Источник

Движение тела, брошенного под углом к горизонту (бросок)

Движение тела, брошенного под углом к горизонту, — движение тела в двумерной системе координат (по двум осям) при изначальном направлении начальной скорости под углом к горизонту. Данное движение является сложным видом механического движения с криволинейной траекторией. Такие типы движений принято рассматривать в проекции на оси выбранной системы координат. В нашем конкретном случае возьмём декартову систему координат и запустим тело под углом к оси ОХ (рис. 1).

Рис. 1. Тело бросили под углом к горизонту

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

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

Рис. 2. Тело бросили под углом к горизонту (максимальная высота подъёма, путь по горизонтали, движение)

Рассмотрим само движение. После броска траектория движущегося тела представляет собой параболу (докажем позже). Выберем произвольную точку на параболе и укажем ускорение, с которым движется тело в данный момент (ускорение свободного падения). Направление данного ускорения — вертикально вниз. Проекции данного ускорения на ось ОХ ( (м/ ), а на ось OY ( (м/ ).

Тогда, вдоль оси ОХ, тело движется равномерно (т.к. ускорение вдоль этой оси равно 0). Более сложным является движение тела вдоль оси OY: между точками A и B тело движется замедляясь, при этом движение равнозамедленное. Между точками B и C движение равноускоренное (рис.2, подписи). Исходя из установленного вида движения, можем решать задачу.

Рис. 3. Тело бросили под углом к горизонту (проекции скоростей)

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

Вернёмся к рисунку 2. Попробуем найти полное время полёта ( ). Для этого воспользуемся тем, что вдоль оси OY тело движется равнозамедленно, а в точке B движение вдоль этой оси и вовсе останавливается. Таким образом, конечная скорость в этой точке вдоль оси OY равна 0. Тогда, исходя из движения:

— т.к. время движения от точки А до B, и от B до C одинаково. Тогда:

Перейдём к вопросу о максимальной дальности броска в горизонтальном направлении ( ).

Вдоль горизонта тело движется равномерно (рис. 2). Тогда путь, проделанный телом за время :

А с учётом (1) и (5):

Перейдём к максимальной высоте полёта ( ). Данный параметр связан с движением тела вдоль оси OY, которое, как мы выяснили, является равноускоренным/равнозамедленным. Рассмотрим участок BC: для него вдоль соответствующей оси тело без начальной скорости движется с ускорением ( ) в течение времени , формируем уравнение:

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

Рис. 4. Тело бросили под углом к горизонту (конечная скорость)

Далее попробуем найти конечную скорость движения (при таких движениях, конечная скорость — скорость при подлёте к Земле). Рассмотрим конечную точку движения С (рис. 4). Скорость тела направлена под неким углом . Построим проекции данного вектора на оси OX и OY. На основании построенного треугольника реализуем теорему Пифагора для поиска модуля полной конечной скорости:

Найдём компоненты вектора . Т.к. движение вдоль оси OX равномерное, значит, , используя (1):

Движение вдоль оси OY от точки B в точку C равноускоренное, причём, без начальной скорости за время , тогда:

Используя (5), получим:

Подставим (12) и (13) в (10):

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

Вывод:

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

Источник

Вычисляем баллистические траектории в играх

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

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

Уравнения движения

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

Существует четыре основных уравнения движения. В статье мы воспользуемся только одним.

Если объяснять на словах, то конечная позиция РАВНА исходной позиции ПЛЮС скорость, умноженная на время ПЛЮС половина ускорения, умноженная на время в квадрате. Это простое уравнение, для его решения необходимо немного алгебры и несколько тригонометрических тождеств.

Освежим знания

Прежде чем начать, давайте вкратце освежим память.

Если дан снаряд с постоянной скоростью S и углом выстрела θ (theta), то мы можем вычислить компоненты скорости x и y. Или если есть S и мы каким-то образом найдём y, то можем вычислить θ и x.

Мы используем алгебру.

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

Дальность

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

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

Если дан снаряд с постоянной скоростью (S) и гравитацией (G), то какой будет его максимальная дальность полёта?

Для тестирования и визуализации я создал демо на Unity. В нём используются чайники, стреляющие чайниками. Пиф-паф!

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

Угол стрельбы для попадания по неподвижной мишени

Теперь начинается интересное.

Если снаряд имеет постоянную скорость (S), а гравитация равна (G), то под каким углом его нужно выстреливать, чтобы попасть в неподвижную мишень?

Бах. Теперь у нас есть два уравнения и два неизвестных. Давайте их проанализируем.

  1. Первое уравнение, два неизвестных (t, θ)
  2. Второе уравнение, два неизвестных (t, θ)
  3. Вычислить t из (1)
  4. Подставить (3) в (2)
  5. Тригонометрическая подстановка: sin θ/cosθ = tanθ
  6. Тригонометрическая подстановка: 1/(cos θ)^2 = 1 + (tan θ)^2
  7. Развернём и преобразуем
  8. Формула корней квадратного уравнения
  9. Умножим верхнюю/нижнюю часть на -S^2/x. Перенесём S^4/x^2 под корень
  10. Применим к каждой части арктангенс

Та-да! В результате мы получили два угла. Один высокий и один низкий. Вот как это выглядит на практике.

Визуальное несовершенство

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

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

Существует ли способ получше?

Скорость горизонтального перемещения

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

Такой подход имеет множество преимуществ. Во-первых, он всегда выглядит красиво!

Во-вторых, его дизайн более интуитивен. Дизайнеров не волнует абсолютная скорость. Им важно, что турель имеет дальность 20 метров и что для перемещения на это расстояние снарядам требуется 1 секунда. Они не обязаны пользоваться строящим графики калькулятором, чтобы менять значения баланса. А художественные изменения не должны влиять на геймплейные механики.

В-третьих, так проще попадать по движущейся мишени. Чуть позже я раскрою это подробнее.

Вот как это выглядит:

Вычисление скорости горизонтального перемещения

Если дан снаряд с горизонтальной скоростью (S) и пиковой высотой (y_peak), то какими должны быть скорость и гравитация для поражения неподвижной мишени?

  1. Основное уравнение движения
  2. Решаем (1), подставив 2
  3. Зададим, что y_peak (пользовательская константа) снаряд достигает во время (1/2)t
  4. Зададим, что y_end (высота цели) снаряд достигает во время t
  5. Магия!
  6. Ещё магия!
  7. Вектор стрельбы равен (S, v.y) с гравитационным ускорением g

Вуаля! Хотя постойте-ка. Магия? Это жульничество! Да, но вполне оправданное.

Пункты (3) и (4) — это ещё два уравнения с двумя неизвестными. Я ленивый и не хочу их записывать. Плюс я запутаюсь и перепутаю знак, поэтому позволю компьютеру решить их за меня.

Точнее, я воспользовался Wolfram Alpha. Рекомендую каждому иметь Wolfram в своём инструментарии, он довольно полезен.

Если a+c == 2b , то y0 , y_peak и y_end лежат на одной прямой. То есть мы стреляем по прямой.

Скорость горизонтального перемещения при подвижной мишени

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

Именно здесь проявляются все достоинства скорости горизонтального перемещения. Задав скорость в плоскости земли, очень просто выполнить вычисления для подвижной мишени.

  1. Где X — позиция мишени, а V — её скорость
  2. Возводим обе части в квадрат.
  3. Преобразуем в квадратное уравнение
  4. Применяем формулу корней квадратного уравнения

Пункты с 5 по 9 см. в предыдущем разделе.

Меня это очень радует. Пиу-пиу-пиу!

Постоянная скорость с подвижной мишенью

А что если нам нужно поразить подвижную мишень снарядом с постоянной скоростью? Ой-ёй. Это очень запутанная задача! Даже не знаю, как к ней подступиться.

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

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

Уравнения четвёртой степени

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

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

Решение таких уравнений находится далеко за рамками этой статьи. Честно говоря, и за пределами моих математических способностей. К счастью для нас, в книге 1990 года Graphics Gems I есть код для решения уравнений четвёртого порядка. Я использовал этот код для своего демо. Не могу гарантировать его точности и численной устойчивости, используйте его крайне осмотрительно.

Способ первый

Итак, давайте его решим. Каким должен быть угол выстрела снарядом с постоянной скоростью по движущейся мишени? Этот способ взят из поста 2007 года Джеймса Макнейлла и дополнен информацией Райана Джакетта.

  1. Где P — позиция мишени, а V — скорость мишени
  2. Возводим обе части в квадрат
  3. Преобразуем
  4. Вычисляем коэффициенты уравнения четвёртого порядка и вставляем в SolveQuartic
  5. Используем t для вычисления позиции мишени при вычислении траектории до неподвижной точки.

Способ работает. Все сложные задачи выполняет SolveQuartic. Затем мы используем решение для неподвижной мишени, изложенное выше.

Способ второй

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

Чёрт возьми. 32 шага!? Это хуже, чем кажется.

1–7 — объявляем переменные.

8–11 — объявляем систему уравнений. Четыре уравнения, четыре неизвестных — d, e, f, t.

12–15 — вычисляем по (8) величину d. Перемножаем d^2 на будущее.

16–19 — вычисляем по (10) величину f. Перемножаем f^2 на будущее.

20–24 — вычисляем по (9) величину e. Перемножаем e^2 на будущее.

25–27 — вычисляем по (11) величину e^2. Подставляем d^2 и f^2.

28–30 — приравниваем (27) к (24). Умножаем на t^2 и преобразуем в уравнение четвёртой степени.

31 — подставляем коэффициенты в SolveQuartic.

32 — подставляем положительные вещественные корни в (14), (18), (23) для d, e, f.

Код довольно короткий. Объявлению переменных отведено больше строк, чем самим вычислениям! Разумеется, кроме SolveQuartic.

Предупреждение

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

Рассматривайте этот код не как готовое решение, а как опорную точку.

Инструменты

При создании этого поста я использовал несколько инструментов. Многие из них были для меня новыми.

  • Unity для создания демо.
  • Paper, Affinity Designer и MSPaint для создания изображений.
  • Arachnid Latex + MathJax для формул LaTeX.
  • FFmpeg для преобразования последовательности скриншотов в анимацию.
  • Gfycat для встраивания анимаций.
  • Чайник из Юты. Пиу-пиу!

Синтаксис LaTeX ужасен, его сложно учить. Все формулы LaTeX можно найти здесь. Вот пример:

Заключение

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

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

Источник

Читайте также:  Как вывести остаток при учете
Оцените статью