70 INPUT « Для выстрела нажать F1»; enter

REM построение координат

SCREEN 9:

 x0 = 50

 y0 = 300

 x1 = 600

 y1 = 50

 x2 = 50

 y2 = 300

REM координата Y

 LINE (x0, y0)-(x0, y1), 12

 LOCATE 18, 4: PRINT “250”

 LOCATE 14, 4: PRINT “500”

 LOCATE 10, 4: PRINT “750”

 LOCATE 6, 4: PRINT “1000”

LINE (48, 245)-(52, 245), 11

LINE (48, 190)-(52, 190), 11

LINE (48, 135)-(52, 135), 11

LINE (48, 80)-(52, 80), 11

REM координата X

 LINE (x0, y0)-(x1, y0), 12

 LOCATE 23, 19: PRINT “1000”

 LOCATE 23, 31: PRINT “2000”

 LOCATE 23, 44: PRINT “3000”

 LOCATE 23, 56: PRINT “4000”

 LOCATE 23, 69: PRINT “5000”

LINE (150, 302)-(150, 298), 11

LINE (250, 302)-(250, 298), 11

LINE (350, 302)-(350, 298), 11

LINE (450, 302)-(450, 298), 11

LINE (550, 302)-(550, 298), 11

REM цель

LINE (x0 + l / 10, 299)-(x0 + l / 10 + 5, 299), 10

LINE (x0 + l / 10, 298)-(x0 + l / 10 + 5, 298), 10

 80 KEY(1) ON

 ON KEY(1) GOSUB 90

 GOTO 80

REM полет

90 v = 200

 g = 9.8

 f = a * 3.14 / 180

100 q = .0005

t = t + q

s = v * t * COS(f) * 2

h = (v * t * SIN(f) – (g * t ^ 2) / 2) * 5.5

LINE (x2, y2)-(x0 + s / 20, y0 – h / 25), 14

x2 = x0 + s / 20

y2 = y0 – h / 25

IF h < 0 THEN 200

GOTO 100

200 END

 END

Функция KEY(1) устанавливает, что дальнейшее выполнение программы начнется с нажатия функциональной клавиши F1. Логично предположить, что KEY(2) устанавливает F2, KEY(3) – F3 и т.д.

Для большего эффекта нужно с 200 –й строки дописать программу вставив еще несколько строк:

200 REM взрыв

r = 30

n = 500

REM: a угол разлета

REM: r радиус разлета, n количество осколков

REM: коэффициенты 0.5 и 1 определяют ширину и высоту разлета

DIM x(n), y(n)

RANDOMIZE (TIMER)

FOR i = 1 TO n

a = -6.28 * RND / 2

rn = r * RND

xc = x2 + rn * .5 * COS(a)

yc = y2 + rn * 1 * SIN(a)

PSET (xc, yc), 9 + 9 * RND

PRESET (x(i), y(i))

NEXT

 END

Данный блок программы используя массив (DIM) случайных чисел ограниченных пространством ( r ) и количеством (n) точек позволяет создать эффектный фейерверк разлета осколков.

Полностью программа представлена в Приложении 2.

Данная задача рассматривалась без учета сопротивления воздуха. Попробуем ввести поправку на сопротивление воздуха.

4. Этап четвертый. Воздействие внешних факторов.

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

Учитывая то, что сопротивление воздуха направленно в противоположную сторону движения тела [4], то силу сопротивления можно представить в виде двух составляющих: вертикальной и горизонтальной, при этом, чем выше скорость, тем больше сопротивление и наоборот.

Выделим блок программы (Приложение 2) с 100-го кадра:

100 q = .0005

t = t + q

s = v * t * COS(f) * 2 (4.1)

h = (v * t * SIN(f) – (g * t ^ 2) / 2) * 5.5  (4.2)

Запишем составляющие горизонтальной и вертикальной скорости:

vs=v*cos(f)

vh=v*sin(f)

Но если пренебречь, тем что с высотой плотность воздуха падает и считать ее в нижних слоях атмосферы неизменной, то упрощенная формула горизонтальной и вертикальной составляющей, в соответствии с законом Аэродинамики [ 4 ], примет вид [ 5 ]:

Компьютерное моделирование движения телКомпьютерное моделирование движения телКомпьютерное моделирование движения тел

Компьютерное моделирование движения телКомпьютерное моделирование движения телКомпьютерное моделирование движения тел

Тогда выражение 4.1 и 4.2 можно изменить записав блок с 100-го кадра в следующем виде:

100 q = .0005

t = t + q

k = .0002

vs = v * COS(f) - (k - k / (k + v * COS(f)))

vh = v * SIN(f) - (k - k / (k + v * SIN(f)))

s = vs * t * 2

h = (vh * t - (g * t ^ 2) / 2) * 5.5

v = SQR(vs ^ 2 + vh ^ 2) (4.3)

LINE (x2, y2)-(x0 + s / 20, y0 - h / 25), 14

x2 = x0 + s / 20

y2 = y0 - h / 25

IF h < 0 THEN 200

GOTO 100

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

Кроме этого, для большей информационности, выведем на экран значение скорости, высоты, дальности и времени:

LOCATE 1, 6: PRINT "V m/s"

LOCATE 2, 6: PRINT "H m"

LOCATE 2, 24: PRINT "S m"

LOCATE 1, 24: PRINT "T s"

LOCATE 1, 12: PRINT v

LOCATE 1, 28: PRINT t

LOCATE 2, 12: PRINT h

LOCATE 2, 28: PRINT s

Причем, первую половину необходимо разместить в программе до 80-й строки (кадра), а вторую в конце тела цикла.

Полностью программа представлена в приложении 3. Следует обратить внимание на то, что значения коэффициентов k и q в приложении 3 изменены для большей реалистичности полета ядра, так как часть ресурсов компьютера задействована для отображения текущих параметров, а выводимые значения высоты h и дальности s делятся на 5,5 и 2 соответственно для соблюдения масштаба.

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

Что бы иметь возможность в процессе работы программы изменять угол стрельбы задействуем еще три функциональные клавиши F2, F3, F5, где F2 будет отвечать за подъем на один градус в верх, F3 – за один градус вниз, F5 – позволит прервать выполнение программы в любое время. Для этого в программе после выполнения подпрограммы выполнения фейерверка вставим блок:

ERASE x,y

210 KEY(2) ON

ON KEY(2) GOSUB 220

KEY(3) ON

ON KEY(3) GOSUB 230

KEY(1) ON

ON KEY(1) GOSUB 72

GOTO 210

GOTO 210

220 a = a + 1

LOCATE 1, 46: PRINT a

GOTO 210

230 a = a - 1

LOCATE 1, 46: PRINT a

GOTO 210

300 END

Оператор ERASE x,y отвечает за обнуление памяти задействованной под массив DIM x(n), y(n). При этом не обходимо обозначить 72 –ю строку перед блоком отвечающим за построение сетки координат.

Чтобы прервать выполнение задачи в любой момент времени, после ее начала, логично, если оператор KEY(5) ON будет размещен сразу за KEY(1) ON в начале программы:


Информация о работе «Компьютерное моделирование движения тел»
Раздел: Информатика, программирование
Количество знаков с пробелами: 29980
Количество таблиц: 3
Количество изображений: 2

Похожие работы

Скачать
27515
0
13

... тенденция к снижению снаряда, то таймер 1 останавливается: If Label17.Caption < 150 Then Timer1.Interval = 0 Цель поражена (Рис.13). Рис.13 Заключение Таким образом, язык программирования Visual Basic, наглядно позволяет смоделировать физический процесс, получить конкретные результаты и навыки. Отличительной особенностью VB, является возможность работы его непосредственно в среде Windows, что ...

Скачать
9701
0
2

... Show UserForm14. Hide Следовательно, при ответе «Да» на данный вопрос балл засчитывается в нейротизм. Таким образом, я научилась работать в среде Visual Basic и создавать тестовую программу. Corel DRAW. Введение Corel DRAW является единственным графическим пакетом, позволяющим делать буквально все, начиная от рисования и заканчивая версткой и обработкой растровых изображений[4]. Отличие ...

Скачать
31030
0
5

... влияет на конечный результат. Такая постановка имитационной задачи сводится к ответу на вопрос: "Что, если?". Имитационное моделирование в биомеханике . Метод имитационного моделирования применительно к биомеханическим задачам позволяет, не регистрируя кинематику и динамику двигательного действия, только по кинетограмме, созданной на компьютере: а) оценить [6, 41] максимальные усилия мышц; ...

Скачать
222848
26
34

... своевременное распределение средств на развитие. Данными вопросами я и занимаюсь в настоящей дипломной работе. 4. Математическое моделирование Интернет - услуг 4.1 Математическое моделирование dial-up подключений Сначала рассмотрим моделирование услуги предоставления доступа в Интернет по dial-up, так как данная услуга является показателем потенциальных абонентов для монопольной услуги ...

0 комментариев


Наверх