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

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

Компьютерное моделирование полета тела брошенного под углом к горизонту

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

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

Выражаем скорение:

ускорение

 

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

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

сила тяжести

Зададим начальные параметры для полета тела под углом к горизонту 
Тело подбрасывается вверх со скоростью v0 и углом
Вектор начальной скорости раскладывается на две составляющие по оси x и по оси y:

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

      a= -g

Если сил сопротивления нет, то скорость по оси x не меняется, тогда:

Координата x  будет определяться из законов равномерного движения:

Скорость   и координата по оси y меняется из-за силы тяжести по уравнениям ускоренного движения

координата

Задание:

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

Код программы на си для полета тела под углом к горизонту:

#include <graphics.h>
#include <math.h>
const float pi = 3.14;
const float g = 9.81;
main()
{
float m = 1; // масса шара — 1.
float v0 = 80; // начальная скорость броска — 80.
float alpha= pi/2.5; // угол броска в радианах.
float dt = 0.05, ax, vx, ay, vy, t, h, x, y, v, hmax = 0; // вводим переменные для определения координат шара.
int xk, yk; // начальные координаты шара.
float xmax; // максимальная абсцисса шара.
initwindow ( 800, 600 );
v = v0; // выставляем начальную скорость.
t = 0; // начальное время.
y = 0; // начальная ордината шара.
x = 0; // начальная абсцисса шара.
// раскладываем вектор скорости на составные части.
vx = v*cos(alpha); // проекция на ось x.
vy = v*sin(alpha); // проекция на ось y.
xk = 400; // выставляем начальную координату шара.
hmax = 0; // максимальная высота шара (шар может вылететь за пределы экрана).
xmax = 0; // максимальная абсцисса шара.
while ( y >= 0 )
{
yk = 590-y; // считаем ординату шара.
xk= 100+x; // считаем абсциссу шара.
setcolor ( WHITE );
circle ( xk, yk, 3 ); // каждую итерацию (каждый кадр) рисуем новый белый шар.
delay ( 10 ); // задержка перед визуализацией нового кадра.
setcolor ( BLACK );
circle ( xk, yk, 3 ); // удаляем старый шар.
ay=ay-g; // выставляем силу тяжести.
y=y+vy*dt+ay*dt*dt/2; // считаем высоту шара.
vy=vy+ay*dt; // считаем новую скорость каждую итерацию.
x=x+vx*dt; // считаем новую абсциссу шара.
t=t+dt; // пробегаемся по оси времени.
// определяем максимальную координаты.
if ( x > xmax ) {xmax = x;}
if ( y > hmax ) {hmax = y;}
};
getch();
closegraph();
printf("Максимальная высота H=%6.3f", hmax);
getch();
}

 

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

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

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