Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PRIM_KURS.doc
Скачиваний:
6
Добавлен:
19.11.2018
Размер:
285.7 Кб
Скачать

1. Задание

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

2. Цель работы

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

3. Постановка задачи

Необходимо написать программу, которая обеспечила бы движение геометрической фигуры (шара) в пределах ограниченного пространства. Ограниченным пространством в данной программе являются рамка, расположенная по периметру экрана и линия, задаваемая математической функцией y=f(x) в нижней части экрана. Необходимо учесть, что функция задается случайными числами и изменяется при нажатии клавиши Space, при этом же меняются начальные координаты геометрической фигуры (шара). Движение геометрической фигуры (шара) происходит под действием сил гравитации. Окончание работы программы должно происходить при нажатии клавиши Esc.

4. Анализ и разработка алгоритма

Суть данной задачи сводится к следующему: мяч с некоторой высоты движется под действием силы тяжести равноускоренно вниз и равнозамедленно вверх после соприкосновения с землей. Поверхность земли неровная, поэтому траектория движения мяча будет зависеть от рельефа земли. Чтобы мяч, применительно к данной задаче, не вылетал за пределы экрана, последний по периметру ограничен рамкой. Для вычисления скорости мяча и траектории его движения до точки соприкосновения с какой-либо поверхностью, а также скорости и траектории движения после соприкосновения применяются следующие формулы:

dx = 1e6

AN = (F(x+dx)-F(x))/dx

N = (cos(AN), sin(AN))

AVI = -AV + 2*AN + 180

VI = (|V|*cos(AVI), |V|*sin(AVI)), где

Vector = (PX, PY) - Вектор

Px – Составляющая по оси Х

Py – Составляющая по оси Y

|Vector| – Длина вектора Vector

Cos(A) – Косинус угла A

Sin(A) – Синус угла A

А – угол в радианах

F(x) – Функция кривой поверхности от Х

Dx – Приращение, для вычисления нормали к функции

AN – Угол вектора нормали

X – точка, в которой произошло соприкосновение

Входные данные:

V – Вектор скорости движения шара

|V| – Длина вектора скорости шара

AV – Угол наклона к горизонтальной оси

N – Вектор нормали к точке соприкосновения шара

Выходные данные:

VI – Полученный вектор скорости

AVI – Угол полученного вектора скорости

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

Рассмотрим эту задачу без учета сопротивления воздуха и геометрической формы и размеров предмета. Будучи брошенным под углом α к горизонту с начальной скоростью v0, тело летит, если не учитывать сопротивление воздуха, по параболе, и через некоторое время падает на землю.

Разложим скорость на горизонтальную и вертикальную составляющие:

vx(0)=v0 cos α,

vy(0)=v0 sin α,

тогда

м одуль вектора v3 из этого треугольника равен

Следовательно, v3 – вектор скорости шара.

Из законов физики нам известно, что ускорение, с которым падают на Землю тела в пустоте, называют ускорением свободного падения. У поверхности земного шара модуль ускорения свободного падения примерно равен 9,8 м/с2. Сила, под действием которой тело приобретает ускорение свободного падения, пропорционально массе тела. Это сила притяжения, действующая со стороны земли на все тела, называется силой тяжести.

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

При направлении движения мяча с изменением его местоположения относительно направления оси Y меняется знак с «+» на «-» при движении вверх и с «-» на «+» при движении вниз.

Изменение траектории движения мяча после соприкосновения его с какой-либо поверхностью происходит следующим образом: рассчитывается угол наклона вектора нормали к оси параллельной оси X по формуле AN = (F(x+dx)-F(x))/dx. Рассчитывается вектор нормали к поверхности в точке соприкосновения. Затем рассчитывается угол наклона между вектором скорости мяча и этой же оси. Далее по формуле AVI = -AV + 2*AN + 180 рассчитывается угол полученного вектора скорости. Затем происходит вычисление полученного вектора скорости по формуле

VI = (|V|*cos(AVI), |V|*sin(AVI)).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]