Моделирование полета тела под углом без сопротивления среды
Компьютерное моделирование полета тела брошенного под углом к горизонту
В данной статье мы смоделируем полет тела брошенного под углом горизонту в поле тяжести без учета сопротивления воздуха.Напишем программу на си для анимации полета тела брошенного под углом к горизонту
При моделировании физических процессов в времени мы разбиваем весь интервал времени на заданные промежутки Время задаётся по формуле:
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 v0 = 350; // начальная скорость броска — 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 ( 400, 500 );
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 = 500-y; // считаем ординату шара.
xk= 50+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();
}
Вернуться к содержанию Перейти к уроку Моделирование полета с учетом сопротивления
Полезно почитать по теме моделирование полета тела
Моделирование полета тела вверх без сопротивления воздуха
Моделирование полета тела под углом с учетом сопротивления воздуха
Поделиться:
Нет комментариев. Ваш будет первым!