Моделирование колебаний горизонтального маятника на двух пружинах

Автор работы: Пользователь скрыл имя, 14 Марта 2015 в 21:52, курсовая работа

Краткое описание

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

Вложенные файлы: 1 файл

курсовик граф системы (1).doc

— 606.50 Кб (Скачать файл)

Решая методом половинного интервала, получим:

 

 

Глава 2. Проектирование системы

 

2.1 Уточнение требований  и выбор концепции визуализации

 

Графическая модель должна представлять основные звенья системы для того, чтобы пользователь мог на основе наглядного представления контролировать процесс.

В процессе моделирования гармонического осциллятора, нужно отобразить колебания пружинного маятника, а именно как будут двигаться груз и пружины, после внешнего воздействия. В нашем случае маятник будет состоять из двух “параллельно соединенных” пружин, для каждой из которых необходимо предусмотреть возможность задания пользователем жесткости и длины.

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

Анимационная картинка должна замедляться или ускоряться в соответствии с изменением системных параметров.

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

Идеальным вариантом осуществления такого графического моделирования была бы её организация в рамках 3D-моделирования. Однако такой способ увеличит накладные расходы на вычислительные ресурсы, что нежелательно в виду их необходимости для сложных математических расчётов. Кроме того, трёхмерная модель процесса не является необходимой с точки зрения специфики работы.

В этой связи принято решение осуществить работу с использованием двумерной модели в проекции вид сбоку.

 

2.2 Средства технической реализации

 

Для создания системы, было решено использовать Delphi 2007.

Delphi – язык и среда  программирования, относящийся к  классу RAD – (RapidApplicationDevelopment   «Средство быстрой разработки приложений») средств CASE - технологий. 

В основе Delphi лежит язык ObjectPascal, который является расширением объектно-ориентированного языка Pascal. В Delphi также входят локальный SQL-сервер, генераторы отчетов, библиотеки визуальных компонентов, и прочие элементы, необходимые для того, чтобы чувствовать себя совершенно уверенным при профессиональной разработке информационных систем или просто программ для Windows-среды.

Delphi позволяет разрабатывать  приложения быстро лишь за счет средств визуализации, ибо визуальное программирование как бы добавляет новое измерение при создании приложений, давая возможность изображать эти объекты на экране монитора до выполнения самой программы. Без визуального программирования процесс отображения требует написания фрагмента кода, создающего и настраивающего объект «по месту». Увидеть закодированные объекты было возможно только в ходе исполнения программы. При таком подходе достижение того, чтобы объекты выглядели и вели себя заданным образом, становится утомительным процессом, который требует неоднократных исправлений программного кода с последующей прогонкой программы и наблюдения за тем, что в итоге получилось.

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

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

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

Замечательным достоинством системы является и то, что размещение компонентов на экране, а также задание начальных значений их свойств (размеры, цвет, вид и др.) Delphi позволяет осуществлять на этапе конструирования формы без написания какой-либо программы.

Для этой цели предусмотрено специальное окно, называемое Инспектором объектов, в котором перечислены все доступные в режиме проектирования свойства выделенного компонента и их текущие значения.

Изменение свойства какого-либо объекта незамедлительно отразится на внешнем виде и коде программы. Это позволяет, уже до запуска программы видеть как будет выглядеть проектируемая форма. Такой способ работы с объектами, имеющими графическое представление, принято называть объектно-ориентированным программированием.

Delphi имеет возможность  использования множества баз  данных. Примерами могут служить  локальные базы данных - MS Access, Paradox, Dbase, сетевые серверные базы данных SQL — InterBase, SysBase.

Обозначим основные преимущества среды Delphi по сравнению с аналогичными средами программирования:

    • быстрота разработки приложения;
    • высокая производительность разработанного приложения;
    • низкие требования разработанного приложения к ресурсам компьютера;
    • наращиваемость за счет встраивания новых компонент и инструментов в среду Delphi;
    • возможность разработки новых компонент и инструментов собственными средствами Delphi (существующие компоненты и инструменты доступны в исходных кодах);
    • удачная проработка иерархии объектов.

 

2.3 Используемые методы

 

Для разработки системы использовались стандартные средства Delphi 2007.

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

TChart является контейнером объектов Series типа TChartSeries – серий данных, характеризующихся различными стилями отображения. Каждая серия будет соответствовать одной кривой на графике.

Обозначим основные свойства компонентов в таблицах 2.1 и 2.2.

 

 

 

 

Таблица 2.1 Свойства компонента TImage

Canvas

property Canvas: TCanvas:

Определяет поверхность (холст, канву) для рисования пером Реп и кистью Brush, для наложения друг на друга нескольких изображений.

Доступен только для чтения. Можно получить доступ, если в свойство Picture содержит битовую матрицу.

AutoSize

property AutoSize: Boolean;

Указывает, изменяется ли автомататом размер компонента, подстраиваясь под размер изображения. 
По умолчанию значение false — не подстраивается.

Center

property Center: Boolean;

Указывает, должно ли изображение центрироваться в поле компонента,если его размеры меньше размеров поля. При значении false изображение располагается в 
верхнем левом углу поля. Свойство не действует, если AutoSize установлено в true или если Stretch 
установлено в true и Picture содержит не пиктограмму.

Incremen-talDisplay

property IncrementalDisplay: Boolean;

Указывает, должно ли изображение частично рисоваться во время медленных операций с большими изображениями. Вместо такого рисования часто можно использовать индикацию процесса обработкой событий OnProgress.

Picture

property Picture: TPicture;

Определяет отображаемый графический объект типа TPicture. Может загружаться программно или во время 
проектирования с помощью Picture Editor.

Stretch

property Stretch: Boolean;

Указывает, должны ли изменяться размеры изображения, подгоняясь под размеры компонента.

Учтите то, что при изменении размеров изображения будет искажение, когда соотношение сторон графического объекта и компонента Image не совпадают.

Transparent

property Transparent: Boolean;

Указывает, должен ли быть цвет фона изображения прозрачным, чтобы сквозь него было видно нижележащее изображение.


 

Таблица 2.2 Свойства компонента TChart

AllowPanning

Определяет возможность пользователя прокручивать наблюдаемую часть графика во время выполнения, нажимая правую кнопку мыши:

  • pmNone – прокрутка запрещена;
  • pmHorizontal – разрешена прокрутка только в горизонтальном направлении;
  • pmVertical – только в вертикальном;
  • pmBoth – в обоих направлениях.

AllowZoom

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

Title

Определяет заголовок диаграммы.

Foot

Определяет подпись под диаграммой. По умолчанию отсутствует. Текст подписи определяется подсвойством Text.

Frame

Определяет рамку вокруг диаграммы.

Legend

Легенда диаграммы – список обозначений.

MarginLeft, 
MarginRight 
MarginTop 
MarginButtom

Значения левого, правого, верхнего и нижнего полей.

ButtomAxis 
LeftAxis 
RightAxis

Эти свойства определяют характеристики соответственно нижней, левой и правой осей. Задание этих свойств имеет смысл для графиков и некоторых других типов диаграмм.

LeftWall 
ButtomWall 
BackWall

Эти свойства определяют характеристики соответственно левой, нижней и задней граней области трехмерного отображения графика.

SeriesList

Список серий данных, отображаемых в компоненте.

View3d

Разрешает или запрещает трехмерное отображение диаграммы.

View3dOptions

Характеристики трехмерного отображения.

Chart3DPersent

Масштаб трехмерности (толщина диаграммы, ширина лент графика).


 

Настройка свойств компонента Chart происходит в редакторе EditingChart (Рис. 2.1.). Вызвать его можно двойным щелчком по компоненту или используя свойство SeriesList Инспектора объектов.

Рис. 2.1. Редактор EditingChart

 

 

 

 

 

Глава 3. Реализация системы

 

3.1 Реализация системы

 

Обозначим основные процедуры созданной системы.

  • Событие нажатия на кнопку «Задать начальные значения».

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

  • Если какой-то из параметров задан неправильно, появится сообщение об ошибке.

procedure TMainForm.bIniValueClick(Sender: TObject);

var

   res:boolean;

begin

   Tmr.Enabled:=false;                     bStartPause.Enabled:=false;             bStartPause.Caption:='Старт';       

   T:=0;

   Series1.Clear;

   Series2.Clear;

   Series3.Clear;

   Series4.Clear;

   if InitValue then  

   begin

      bReset.Enabled:=true;                      

      bStartPause.Enabled:=true;                 

      MyHSP.Print(img,0);    

end;

end;

  • Событие срабатывания таймера. При этом необходимо выполнить расчёт положения тела и его скорости, а так же изменение энергий и вывести всё на графиках.

procedure TMainForm.TmrTimer(Sender: TObject);

begin

   MyHSP.Print(img, T);                                                    

   T:=T+Tmr.Interval/1000;                                                

   if T>ChartRes.BottomAxis.Maximum then

      ChartRes.BottomAxis.Maximum:= ChartRes.BottomAxis.Maximum + 10;

   if abs(MyHSP.V(T)*100)>ChartRes.LeftAxis.Maximum then

   begin    ChartRes.LeftAxis.Maximum:=abs(MyHSP.V(T)*100*1.05);

      ChartRes.LeftAxis.Minimum:=-abs(MyHSP.V(T)*100*1.05);

   end;

   ChartRes.Series[0].AddXY(T,MyHSP.X(T)*100);

   ChartRes.Series[1].AddXY(T,MyHSP.V(T)*100);

   chartEnergy.Series[0].Clear;

   chartEnergy.Series[1].Clear;   chartEnergy.Series[0].AddY(MyHSP.EnergyKinetik(T));   chartEnergy.Series[1].AddY(MyHSP.EnergyPotential(T));;

end;

 

  • Событие нажатия на кнопку «Старт/Пауза». При этом изменяется состояние таймера.

procedure TMainForm.bStartPauseClick (Sender: TObject); 

Информация о работе Моделирование колебаний горизонтального маятника на двух пружинах