Автор работы: Пользователь скрыл имя, 14 Марта 2015 в 21:52, курсовая работа
Под визуализацией программного обеспечения понимается совокупность методик использования графики и средств человеко-машинного взаимодействия, применяемых для лучшего уяснения понятий и эффективной эксплуатации программного обеспечения, а также для спецификации и представления программных объектов в процессе создания программ. Проектирование является одной из основных стадий создания изделия в технике.
Решая методом половинного интервала, получим:
Графическая модель должна представлять основные звенья системы для того, чтобы пользователь мог на основе наглядного представления контролировать процесс.
В процессе моделирования гармонического осциллятора, нужно отобразить колебания пружинного маятника, а именно как будут двигаться груз и пружины, после внешнего воздействия. В нашем случае маятник будет состоять из двух “параллельно соединенных” пружин, для каждой из которых необходимо предусмотреть возможность задания пользователем жесткости и длины.
После того, как груз будет смещен с точки равновесия, пользователь должен видеть как будет вести себя система, а именно: как перемещается груз, как изменяется его скорость и положение, а так же как изменяется энергия колебаний с течением времени. Для этого следует синхронизировать процессы визуализации движения маятника с процессами построения графиков.
Анимационная картинка должна замедляться или ускоряться в соответствии с изменением системных параметров.
Для колебаний пружинного маятника нужно предусмотреть возможность моделировать незатухающие и затухающие колебания.
Идеальным вариантом осуществления такого графического моделирования была бы её организация в рамках 3D-моделирования. Однако такой способ увеличит накладные расходы на вычислительные ресурсы, что нежелательно в виду их необходимости для сложных математических расчётов. Кроме того, трёхмерная модель процесса не является необходимой с точки зрения специфики работы.
В этой связи принято решение осуществить работу с использованием двумерной модели в проекции вид сбоку.
Для создания системы, было решено использовать 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 2007.
Для визуализации движения маятника было решено использовать компонент TImage, который отображает графического изображения и обеспечивает работу с изображением, а для визуализации графиков - компонент TChart, который позволяет строить различные диаграммы и графики.
TChart является контейнером объектов Series типа TChartSeries – серий данных, характеризующихся различными стилями отображения. Каждая серия будет соответствовать одной кривой на графике.
Обозначим основные свойства компонентов в таблицах 2.1 и 2.2.
Таблица 2.1 Свойства компонента TImage
Canvas |
property Canvas: TCanvas: Определяет поверхность (холст, канву) для рисования пером Реп и кистью Brush, для наложения друг на друга нескольких изображений. Доступен только для чтения. Можно получить доступ, если в свойство Picture содержит битовую матрицу. |
AutoSize |
property AutoSize: Boolean; Указывает, изменяется ли автомататом размер компонента,
подстраиваясь под размер изображения. |
Center |
property Center: Boolean; Указывает, должно ли изображение центрироваться в
поле компонента,если его размеры меньше
размеров поля. При значении false изображение
располагается в |
Incremen-talDisplay |
property IncrementalDisplay: Boolean; Указывает, должно ли изображение частично рисоваться во время медленных операций с большими изображениями. Вместо такого рисования часто можно использовать индикацию процесса обработкой событий OnProgress. |
Picture |
property Picture: TPicture; Определяет отображаемый графический объект
типа TPicture. Может загружаться программно
или во время |
Stretch |
property Stretch: Boolean; Указывает, должны ли изменяться размеры изображения, подгоняясь под размеры компонента. Учтите то, что при изменении размеров изображения будет искажение, когда соотношение сторон графического объекта и компонента Image не совпадают. |
Transparent |
property Transparent: Boolean; Указывает, должен ли быть цвет фона изображения прозрачным, чтобы сквозь него было видно нижележащее изображение. |
Таблица 2.2 Свойства компонента TChart
AllowPanning |
Определяет возможность пользователя прокручивать наблюдаемую часть графика во время выполнения, нажимая правую кнопку мыши:
|
AllowZoom |
Позволяет пользователю изменять во время выполнения масштаб изображения, вырезая фрагменты диаграммы или графика курсором мыши. |
Title |
Определяет заголовок диаграммы. |
Foot |
Определяет подпись под диаграммой. По умолчанию отсутствует. Текст подписи определяется подсвойством Text. |
Frame |
Определяет рамку вокруг диаграммы. |
Legend |
Легенда диаграммы – список обозначений. |
MarginLeft, |
Значения левого, правого, верхнего и нижнего полей. |
ButtomAxis |
Эти свойства определяют характеристики соответственно нижней, левой и правой осей. Задание этих свойств имеет смысл для графиков и некоторых других типов диаграмм. |
LeftWall |
Эти свойства определяют характеристики соответственно левой, нижней и задней граней области трехмерного отображения графика. |
SeriesList |
Список серий данных, отображаемых в компоненте. |
View3d |
Разрешает или запрещает трехмерное отображение диаграммы. |
View3dOptions |
Характеристики трехмерного отображения. |
Chart3DPersent |
Масштаб трехмерности (толщина диаграммы, ширина лент графика). |
Настройка свойств компонента Chart происходит в редакторе EditingChart (Рис. 2.1.). Вызвать его можно двойным щелчком по компоненту или используя свойство SeriesList Инспектора объектов.
Рис. 2.1. Редактор EditingChart
Обозначим основные процедуры созданной системы.
С формы считываются начальные параметры, введенные пользователем, запускается таймер, который будет в некоторые моменты времени производить расчёт и выводить результаты расчёта на графиках. Так же выводится картинка анимации.
procedure TMainForm.bIniValueClick(
var
res:boolean;
begin
Tmr.Enabled:=false;
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.
begin ChartRes.LeftAxis.Maximum:=
ChartRes.LeftAxis.Minimum:=-
end;
ChartRes.Series[0].AddXY(T,
ChartRes.Series[1].AddXY(T,
chartEnergy.Series[0].Clear;
chartEnergy.Series[1].Clear;
chartEnergy.Series[0].AddY(
end;
procedure TMainForm.bStartPauseClick (
Информация о работе Моделирование колебаний горизонтального маятника на двух пружинах