Моделирование полета под углом с учетом сопротивления

17 сентября 2018 - Администратор

Компьютерное моделирование полета под углом к горизонту с учетом сопротилвения воздуха

В данной статье мы разберем математическую модель полета тела под углом к горизонту в поле тяжести земли с учетом сопротивления воздуха. Рассмотрим программу на си в которой моделируется полет тела под углом и отображается в виде анимации на экране
Разобьем по стандартной схеме весь интервал времени на промежутки
t = dt * n, где n – кол-во промежутков, а dt – промежуток приращения времени.
Будем считать,  что в течение этого временного промежутка, силы не меняются. Тогда можно записать второй закон Ньютона в векторном виде
.

второй закон ньютона

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

ускорение

Соответственно, записываем второй закон Ньютона в проекциях на оси x и y

ускорение в проекциях на оси

 

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

проекции скоростей

Координаты тела можно вычислить по уравнению ускоренного движения

Разберём задачу движения тела, подброшенного вверх под углом к горизонту с учётом сопротивления воздуха На тело действует сила тяжести, направленная вниз. Сила тяжести направлена в противоположную сторону оси OY. Сила сопротивления направлена против вектора скорости

силы

Зададим начальные параметры движения тела под углом к горизонту Проекции вектора скорости на оси:

скорости

Для итераций сначала определяются проекций сил:

проекции сил

Определяем  проекции  ускорения на оси :

проекция ускорений

 

Определяем проекции скорости в каждый момент времени:

проекции скоростей

Определяем модуль вектора скорости   по теореме Пифагора:

модуль скорости

Координаты тела определяются из уравнений равноускоренного движения 

Повторяем итерации заданное количество раз. Программа была написана на си в ней реализуется алгоритм анимации. Для анимации объекта в си рисуется объект с текущими координатами поле задержки графический объект стирается, вычисляются е=новые координаты объекта и итерация анимации повторяется. подробнее об анимации в Си
Задание:
Задать цель в  виде  вертикальной или горизонтальной линии,  подобрать вручную параметры скорости и угла , для попадания цели. Написать программу , в которой при заданной скорости  коэффициента сопротивления перебираются с  определенным шагом углы, моделируется полет и проверяется попадание в цель.

Код программы на си для полета под углом к горизонту с учетом сопротивления воздуха
#include <graphics.h>
#include <math.h>
const float K = 5; // масштаб анимации
main()
{

float R = 5.e-3; // радиус шара.
float s = 10; // коэффициент сопротивления.
float g = 9.81; // ускорение свободного падения.
float m = 0.1; // масса шара.
float v0 = 200; // начальная скорость броска.
float alfa=0.1; // угол подбрасывания (в радианах).
float Fcx,Fcy, dt = 0.001, ax, vx,ay,vy, t, h,x,y,v, hmax = 0; // вводим переменные для определения координат.
float dtOut = 0.1, tOut = 0; // частота вывода нового кадра на экран.
int xk, yk; // координаты мяча на экране
initwindow ( 800, 600 ); // создаём окно для графики.
v = v0; // начальная скорость.
t = 0; // начальное время.
y = 0.; // начальная ордината шара.
x=0.; // начальная абсцисса шара.
// раскладываем вектор скорости на проекции на оси.
vx=v*cos(alfa);
vy=v*sin(alfa);
xk = 400;
while ( y >= 0 ) {
yk = 590 - K*y;
xk = 100+x; 
setcolor (WHITE);
circle (xk,yk,3);
delay (100);
setcolor (BLACK); 
circle (xk, yk, 3);
Fcx = - s*R*vx;
Fcy = - s*R*vy;
ay = Fcy/m - g;
ax=Fcx/m;
y=y+vy*dt+ay*dt*dt/2;
vy=vy+ay*dt;
x=x+vx*dt+ax*dt*dt/2;
vx=vx+ax*dt;
v=sqrt(vx*vx+vy*vy);
t=t+dt;
if ( h > hmax ) hmax = h;
};
getch();
closegraph();
printf("Максимальная высота H=%f", hmax);
}

Вернуться к содержанию Перейти к следующему уроку Клеточные автоматы

Комментарии (0)

Нет комментариев. Ваш будет первым!