Моделирование полета под углом с учетом сопротивления
Компьютерное моделирование полета под углом к горизонту с учетом сопротилвения воздуха
В данной статье мы разберем математическую модель полета тела под углом к горизонту в поле тяжести земли с учетом сопротивления воздуха. Рассмотрим программу на си в которой моделируется полет тела под углом и отображается в виде анимации на экране
Разобьем по стандартной схеме весь интервал времени на промежутки
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; // вводим переменные для определения координат.
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);
}
Вернуться к содержанию Перейти к следующему уроку Клеточные автоматы
Полезно почитать по теме моделирование полета тела
Моделирование полета тела вверх без сопротивления воздуха
Моделирование полета под углом к горизонту без сопротивления воздуха
Поделиться:
Нет комментариев. Ваш будет первым!