Материал: Полет снаряда с учетом сопротивления воздуха

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

где fтр - коэффициент трения скольжения.

Сила трения качения пропорциональна силе нормального давления N, с которой одно тело действует на другое, и обратно пропорциональна радиусу r катящегося тела (закон Кулона)


где fк - коэффициент трения качения.

Уравнение поступательного движения тела переменной массы (уравнение Мещерского)


где m и v - масса и скорость тела в рассматриваемый момент времени,  - главный вектор внешних сил, v1 - скорость отделяющихся частиц после отделения (если ), либо присоединяющихся частиц до присоединения (если ).

Второе слагаемое в правой части уравнения Мещерского


называется реактивной силой

В отсутствие внешних сил


Если начальная скорость тела равна нулю, то тело движется прямолинейно в направлении, противоположном относительной скорости u отделяющихся частиц


и при

   (формула Циолковского)

где  - начальная масса тела.

Алгоритм решения задачи

Уравнение движения:


Для решения данного уравнения можно использовать любой из методов для численного решения дифференциальных уравнений, например, метод Эйлера.

Сила трения Fтр находится по формуле

Fтр = Av + Bv3

где А - коэффициент сопротивления воздуха;

В - коэффициент, учитывающий вязкое трение.

При составлении программы будем учитывать следующие соотношения:

Fтр = Av + Bv3

xn+1 = xn + vx,nDt; yn+1 = yn + vy,nDt;

tn+1 = tn + Dt.

2. Структурная схема процедуры построения траектории


После запуска среды разработки окно загрузки сменяется несколькими новыми окнами, за которыми просматривается рабочий стол компьютера. Все эти окна представляют собой интерфейс программы Borland C++ Builder 6, который изображен на рис. 1.

Рис. 1 Интерфейс программы Borland C++Builder 6

Этот интерфейс называется средой быстрой разработки приложений RAD (Rapid Application Development). Такое название он получил за то, что создание программы в нем сводится к простому конструированию внешнего вида будущей программы из готовых кубиков, а большую часть стандартных и рутинных операций за человека выполняет компьютер. Например, компьютер автоматически создает заготовку текста программы для функций обработки событий.

Самое верхнее главное окно интерфейса (рис. 2) имеет заголовок C++Builder 6 - Project 1, который отражает название среды разработки и имя нового проекта, из которого будет получена работающая программа.

Рис 2. Главное окно интерфейса

Проектом называется вся группа программных файлов, которые необходимы для создания конечной исполняемой программы. Так, например, в состав проекта могут включаться файлы с текстами программ, файл ресурсов с рисунками курсоров и иконок (значков), звуковые файлы и т. п. Первоначально проект хранится в памяти компьютера, и для того чтобы сохранить его на диске, необходимо будет выполнить стандартные операции сохранения, создав при этом отдельную папку. Кроме того, интерфейс сам предложит сохранить проект, если вы решите выйти из программы или попытаетесь создать новый проект.

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

Справа от быстрых кнопок расположена палитра визуальных компонентов VCL (Visual Component Library, библиотека визуальных компонентов). Это те самые объекты или программные компоненты, предназначенные для быстрого создания визуальных программ для Windows. Компоненты позволяют быстро создавать в программе различные программные кнопки, рисунки, надписи, таймеры, календари и т. п. Палитра визуальных компонентов состоит из нескольких закладок, на которых располагаются компоненты, распределенные по группам. Именно с помощью этих компонентов вы будете быстро создавать новые программы.

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

В центре экрана располагается окно дизайнера форм. Это окно будущей программы. Оно содержит строку заголовка, в котором отображается название формы Forml (созданное по умолчанию) и кнопки управления окном. На поле этого окна будут помещаться компоненты VCL в виде программных кнопок, надписей и других элементов будущей программы.

Под окном дизайнера форм располагается окно редактора кода с заголовком Unitl.cpp (также созданным по умолчанию), в котором производится набор и редактирование кода (текста) программы.

Следующее окно интерфейса располагается в левой нижней части экрана. Это окно инспектора объектов Object Inspector. В этом окне производится настройка основных свойств визуальных компонентов. Расположение окна инспектора объектов в программе не фиксированное и при желании его можно переместить в ту часть рабочей области программы, которая для вас наиболее удобна. Для этого необходимо нажать левую кнопку мыши на строке заголовка окна и, удерживая ее, переместить окно.

Первым шагом в разработке приложения C++ Builder является создание проекта. Файлы проекта содержат сгенерированный автоматически исходный текст, который становится частью приложения, когда оно скомпилировано и подготовлено к выполнению. Чтобы создать новый проект, нужно выбрать пункт меню File/New Application.++ Builder создает файл проекта с именем по умолчанию Project1.cpp, а также make-файл с именем по умолчанию Project1.mak. При внесении изменений в проект, таких, как добавление новой формы, C++ Builder обновляет файл проекта.

Проект или приложение обычно имеют несколько форм. Добавление формы к проекту создает следующие дополнительные файлы:

Файл формы с расширением .DFM, содержащий информацию о ресурсах окон для конструирования формы

Файл модуля с расширением .CPP, содержащий код на C++.

Заголовочный файл с расширением .H, содержащий описание класса формы.

Когда вы добавляете новую форму, файл проекта автоматически обновляется.

Для того чтобы добавить одну или более форм к проекту, выберите пункт меню File/New Form. Появится пустая форма, которая будет добавлена к проекту. Можно воспользоваться пунктом меню File/New, выбрать страницу Forms и выбрать подходящий шаблон из репозитория объектов.

Теперь приступаем к созданию приложения. Поместим на форму компоненты: - диаграмма (страница Additional). Этот компонент облегчает создание специальных панелей для графического представления данных. - строка ввода (страница Standard). Предназначена для ввода, отображения или редактирования одной текстовой строки. - группа элементов (страница Standard). Этот компонент используется для группировки нескольких связанных по смыслу компонентов. - представляет собой статический текст и служит для отображения информации (страница Standard). - представляет собой многострочный текстовый редактор и служит обычно для вывода массива строк и включает многие свойства и сообщения компонента TEdit (страница Standard). - панель (страница Standard). Этот компонент служит для объединения нескольких компонентов. Содержит внутреннюю и внешнюю кромки, что позволяет создать эффекты «вдавленности» и «выпуклости». - инструментальная панель (страница Win32). Предназначена для быстрого доступа к часто используемым функциям приложения.

Чтобы добавить обработчик события для элемента управления, нужно выбрать этот элемент на форме, открыть страницу событий в инспекторе объектов и дважды щелкнуть мышью на колонке справа от необходимого события. В соответствующей строке ввода появится имя функции. C++ Builder сгенерирует прототип обработчика событий и покажет его в редакторе кода. После этого следует ввести следующий код в операторные скобки { ... } тела функции.

Для того, чтобы откомпилировать текущий проект, из меню Compile нужно выбрать пункт меню Compile. Для того, чтобы откомпилировать проект и создать исполняемый файл для текущего проекта, из меню Run нужно выбрать пункт меню Run. Компоновка проекта является инкрементной (перекомпилируются только изменившиеся модули).

Если при выполнении приложения возникает ошибка времени выполнения, C++ Builder делает паузу в выполнении программы и показывает редактор кода с курсором, установленным на операторе, являющемся источником ошибки. Прежде чем делать необходимую коррекцию, следует перезапустить приложение, выбирая пункт меню Run из контекстного меню или из меню Run, закрыть приложение и лишь затем вносить изменения в проект. В этом случае уменьшится вероятность потери ресурсов Windows.

4. Текст программы

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "math.h"

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"*Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------__fastcall TForm1::quitClick(TObject *Sender)

// выход из программы

{();

}

//---------------------------------------------------------------------------__fastcall TForm1::hlpClick(TObject *Sender)

//окно помощи

{>HelpCommand(HELP_CONTENTS, 0);

}

//---------------------------------------------------------------------------__fastcall TForm1::puskClick(TObject *Sender)

//запуск снаряда

{g = 9.81;xs[10000], ys[10000];x, y, fy, fx, f, vx, vy, v, a, b, m, t1, a1, t;max;i, n;= StrToFloat(Edit3->Text);= StrToFloat(Edit2->Text);= a1 * M_PI / 180.0;= StrToFloat(Edit4->Text);= StrToFloat(Edit5->Text);= StrToFloat(Edit1->Text);= 0.0;= 0.0;= 0.0;= 0.01;->Clear();->Series[0]->Clear();->Series[1]->Clear();= v * cos(a1);= v * sin(a1);= 0;= 1;[1] = 0;[1] = 0;

{= - a * v - b * v * v * v;= f * vx / v;= vx + fx * t1 / m;= x + vx * t1;= f * vy / v - m * g;= vy + fy * t1 / m;= y + vy * t1;= t + t1;= sqrt(vx * vx + vy * vy);(y > max) max = y;->Lines->Add("t=" + FloatToStrF(t, ffFixed, 10,3) +

" x=" + FloatToStrF(x, ffFixed, 15,5) +

" y=" + FloatToStrF(y, ffFixed, 15,5));++;[n] = x;[n] = y;

}(y >= 0);->Lines->Add("Дальность " + FloatToStrF(x, ffFixed, 5,1) + " м");->Lines->Add("Время " + FloatToStrF(t, ffFixed, 1,1) + " c");(x > max) max = x;->LeftAxis->Minimum = 0;->LeftAxis->Maximum = max;->BottomAxis->Minimum = 0;->BottomAxis->Maximum = max;(i=1;i<=n;i++)->Series[0]->AddXY(xs[i], ys[i],"",clRed);(i=1;i<=n;i++)

{->Series[1]->Clear();->Series[1]->AddXY(xs[i], ys[i],"",clBlue);(10);>ProcessMessages();

}

}

//---------------------------------------------------------------------------

траектория полет программа borland

5. Описание программы

.1 Структура программы

В программе разработаны две функции пользователя.

Функция quitClick

Назначение: выход из программы.

Функция hlpClick

Назначение: вывод окна помощи.

Функция puskClick

Назначение: запуск снаряда и определение параметров траектории.

Локальные переменные:

Тип double- ускорение свободного падения;, ys - координаты снаряда по промежуткам времени;- начальная скорость;- масса снаряда;- время движения;- шаг по времени;- коэффициент сопротивления воздуха;- угол вылета;, vy - проекции скорости по осям координат;- текущая скорость;- скорость на очередном промежутке времени;- расстояние;- высота траектории;

5.2 Инструкция пользователя

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

. ПК с процессором Pentium IV или более мощным.

. Операционная система Microsoft Windows XP, Windows 7, Windows 8 (для работы с локализованным интерфейсом операционная система должна обеспечивать необходимую языковую поддержку).

. Требования к оперативной памяти зависят от используемой операционной системы: 512 Мб - 1 Гб.

. Свободное место на диске: 1 Мб для установки программного файла, 1,5 Мб для работы системы.

. Мышь или аналогичное устройство.

. Пакет C++ Builder.

Разработанное приложение (имя выполняемого файла SN) можно запустить на выполнение одним из следующих способов (исключая запуск из среды C++ Builder):

. Если на Рабочем столе есть значок приложения, оно запускается двойным щелчком левой кнопки мыши на этом значке.

. Запуск приложения из окна папки. Открыть папку, в которой находится приложение, найти значок SN и запустить приложение двойным щелчком.

. Запуск приложения из Проводника. Щелкните правой кнопкой мыши на кнопке Пуск и выберите в открывшемся меню пункт Проводник. На левой панели окна Проводника разворачивайте вложенные папки, пока не найдете нужную. Откройте ее, и на правой панели увидите значок созданного приложения SN. Оно запускается двойным щелчком на значке.

После запуска приложения на экран будет выведено главное окно (рис. 3).

Рис 3. Окно приложения

В нижней части окна расположена панель с тремя кнопками:

«Пуск» - запуск алгоритма моделирования траектории движения.

«Помощь» - вывод окна с описанием алгоритма программы.

«Выход» - завершение работы с программой.

В левой части находятся строки ввода исходных данных и окно вывода таблицы параметров траектории. Остальную часть окна занимает область построения траектории.

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

5.3 Контрольный пример



Выводы по работе


В результате выполнения курсовой работы мною была разработана программа моделирования траектории полета снаряда.

Программа позволяет:

§  осуществлять ввод исходных данных с клавиатуры пользователем;

§  рассчитывать точки траектории и выводить ее на экран;