Организация процесса и расчетные формулы
⇐ ПредыдущаяСтр 2 из 2 Организовывается процесс работы программы следующим образом. При запуске программы появляется форма, на которой отображаются объекты управления. Для объекта Picture 1 свойство DrawWidth = 8, это толщина точек, при помощи которых на объекте изображается эллипс, прорисовка точек с использованием метода PSet происходит в теле цикла For…Next следующим образом: Picture1.PSet (180 * Cos(i) + 200, 100 * Sin(i) + 140) В результате выполнения цикла получаем изображение эллипса, у которого большая полуось равна 90,а малая 50, и смещённым относительно левого верхнего угла объекта Picture 1 на 200 пикселей влево и 140 – вниз. С помощью метода PSet рисуются точки на осях абсцисс и ординат, задающие единичный отрезок. Масштаб задан следующий 360 пикселей = 100 метров. Таким образом, для пользователя большая полуось будет составлять 45 метров, а меньшая – 50 метров. При нажатии на командную кнопку Command 1 проверяется условие если Slider1.Value = 0, таймер, организующий движение объекта не включается (Timer1.Enabled = False) так как это означает, что скорость равна нулю. Во всех остальных случаях таймер включается (Timer1.Enabled = True). При нажатии на командную кнопку Command 2 таймеры Timer 1 и Timer 2 выключаются Timer1.Enabled = False: Timer2.Enabled = False, что приводит к остановке движения тела и остановке отсчёта времени. Теперь последовательно рассмотрим программный код процедур Timer1_Timer() и Timer2_Timer(). С помощью объекта Timer1, организуется движение объекта. В первую очередь активируется Timer 1. Затем рассчитываются координаты объекта Shape 1 по формулам
x = 180 * Cos(fi) + 200 y = 100 * Sin(fi) + 140
Формулы совпадают с формулами, по которым происходила прорисовка эллипса, это обеспечивает то, что объект движется по траектории, совпадающей с эллипсом. После того как координаты рассчитаны, они присваиваются свойствам Left и Top объекта Shape 1, определяющих положение объекта на объекте Picture 1. Также координаты выводятся в соответствующие метки на форме LabelX.Caption = (x - 20) \ 4: LabelY.Caption = (240 - y) \ 4.
Переменная fi изменяется по закону fi = fi + (Slider1.Value / 2) * 3.1415 / 180, т.е. угол разбиения, а следовательно и скорость объекта Shape 1, зависит от свойства Value, объекта Slider1, иначе говоря от положения бегунка. Число полных кругов, пройденных объектом Shape 1, рассчитывается по формуле k = Int(fi / 6.28), и после расчёта выводится в соответствующую метку LabelK.Caption = k. Пройденный телом путь, рассчитывается по формуле S = Round(223.112 / 6.28 * fi). Число 223.112 – это длина эллипса в метрах, рассчитана с помощью определённого интеграла:
4* .
После расчёта значение выводится в соответствующую метку LabelS.Caption = S. Свойство Interval объекта Timer 1, равно 1, это значит, что все описанные выше действия повторяются 1 раз в миллисекунду. Величина интервала подобрана опытным путём. В программном коде процедуры Timer2_Timer() осуществляется подсчёт времени, по формуле LabelTime.Caption = LabelTime.Caption + 0.1,а свойство Interval объекта Timer2 равно 100, что обеспечивает отсчёт времени в секундах, с точностью до десятых. Скорость объекта Shape 1, рассчитывается по формуле v = (Sqr((x2 - x) ^ 2 + (y2 - y) ^ 2)) / (Timer2.Interval) * 1000. Расстояние между двумя соседними точками определяется как корень квадратный из суммы квадратов разностей координат этих точек, и делится на время, т.е интервал таймера Timer 1. Разработка блок-схемы Представим графический алгоритм, в виде блок-схемы, для процедуры Private Sub Timer1_Timer(), отвечающей за передвижение тела по эллиптической траектории.
Текст программы на VB
Dim fi As Double 'угол' Dim x As Integer 'текущая координата Х Dim y As Integer 'текущая координата Y Dim x2 As Integer Dim y2 As Integer Dim v As Single 'скорость тела Private Sub Command1_Click() If Slider1.Value = 0 Then Timer1.Enabled = False Else Timer1.Enabled = True 'при нажатии на СТАРТ если скорость установлена 0,тело не движется
End Sub Private Sub Command2_Click() Timer1.Enabled = False 'кнопка СТОП.Движение тела и отсчёт времени прекращается. Timer2.Enabled = False End Sub Private Sub Form_Load() Picture1.DrawWidth = 8 'устанавливается толщина линии 8 пикселей For i = 0 To 360 Picture1.PSet (180 * Cos(i) + 200, 100 * Sin(i) + 140) 'при помощи метода PSet рисуется эллипс Next Shape1.Left = -20 'координаты объекта при загрузке формы,таковы,что объект отсутствует на форме Shape1.Top = -20 fi = 0 Picture1.PSet (380, 240) 'точки на осях x и y,единичный отрезок Picture1.PSet (20, 40) End Sub Private Sub Timer1_Timer() If Not Timer2.Enabled Then Timer2.Enabled = True x = 45 * 4 * Cos(fi) + 48 * 4 'траектория движения тела, координаиа Х y = 25 * 4 * Sin(fi) + 33 * 4 'Y Shape1.Left = x Shape1.Top = y LabelV.Caption = Round(v, 3) 'вывод значения скорости в метку,точность до тысячных LabelX.Caption = x 'вывод координат в метки LabelY.Caption = y LabelK.Caption = Int(fi / 6.28) 'количество кругов LabelS.Caption = Round(223.112 / 6.28 * fi) 'пройденный путь fi = fi + (Slider1.Value / 2) * 3.1415 / 180 'закон изменения угла разбиения End Sub Private Sub Timer2_Timer() LabelTime.Caption = LabelTime.Caption + 0.1 'время v = (Sqr((x2 - x) ^ 2 + (y2 - y) ^ 2)) / (Timer2.Interval) * 1000 'скорость x2 = x y2 = y End Sub 5. Контрольный пример
Инструкция пользователя Данная программа является графической визуализацией движения объекта по эллиптическому маршруту, с регулируемой скоростью. Запустите файл ”Project1.exe”. На экране появится форма, большую её часть занимает рамка с изображением прямоугольной системы координат и изображённого в ней эллипса. При нажатии на кнопку «Старт», появляется объект в виде небольшого круга, движущегося по траектории, обозначенной эллипсом. В окошках, расположенных на форме слева указываются параметры движения тела: координаты, количество полных пройденных кругов, общий пройденный путь и скорость. Скорость тела регулируется с помощью бегунка, расположенного внизу формы. Процесс движения можно остановить, нажав на кнопку «Стоп», при повторном нажатии на «Старт» тело продолжит движение при этом характеристики движения не обнулятся, и их отсчёт будет продолжен с момента остановки. Для выхода из программы нажмите на кнопку с крестиком в верхнем правом углу окна. Список использованной литературы 1. А.Г. Паутова. Visual Basic Творческое проектирование. В 3 ч. – М.: Классикс Стиль, 2003. – 128 с. 2. Марченко А.Л. «Введение в программирование»: Учебное пособие. - Московский университет, 2005. – 258 с.
3. Либерти Д. «Программирование на VB»: Пер. с англ. – 2-ое изд.- Сивол-Плюс, 2004. – 688 с. 4. Мультимедийное пособие «Программирование для студентов», Alex Soft.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|