КП: Динамика лавины — различия между версиями
Sizova (обсуждение | вклад) (→Визуализация программы) |
Sizova (обсуждение | вклад) (→Визуализация программы) |
||
Строка 147: | Строка 147: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | Файл '''"dl_avalanche_finish.html"''' | ||
+ | <syntaxhighlight lang="javascript" line start="1" enclose="div"> | ||
+ | <!DOCTYPE html> | ||
+ | <html> | ||
+ | <head> | ||
+ | <title>Avalanche</title> | ||
+ | <script src="dl_avalanche_finish.js"></script> | ||
+ | </head> | ||
+ | <body onload="main_dl_avalanche_finish();"> | ||
+ | <canvas id="canvas_avalanche_finish" width="800" height="400" style="border: 1px solid #000000"></canvas> | ||
+ | </body> | ||
+ | </html> | ||
+ | </syntaxhighlight> | ||
+ | </div> | ||
== Обсуждение результатов и выводы == | == Обсуждение результатов и выводы == |
Версия 09:28, 11 июня 2015
А.М. Кривцов > Теоретическая механика > Курсовые проекты ТМ 2015 > Динамика лавиныКурсовой проект по Теоретической механике
Исполнитель: Сизова Екатерина
Группа: 09 (23604)
Семестр: весна 2015
Содержание
Аннотация проекта
На данный момент лавины являются одним из самых опасных видов природных катастроф. Под снежными лавинами погибает большое количество горнолыжников, сноубордистов, горных туристов, а также происходит разрушение горных деревень, дорожной инфраструктуры и наносится экологический вред лесам. Целью данной работы является разработка модели лавины, условий, при которых происходит ее сход(отрыв), а также расчет последствий, к которым может привести сход лавины.
Формулировка задачи
- разработка модели лавины, как набор шариков, обладающих определенной массой и находящихся в неустойчивом состоянии
- расчет параметров отрыва(схода лавины), ее распространения, а также исследование динамических характеристик процесса жизненного цикла лавины
Общие сведения по теме
Снег удерживается на склоне горы за счет силы трения. Сход лавины происходит в тот момент, когда сила давления массы снега начинает превышать силу трения.
Наиболее благоприятными для лавинообразования являются склоны крутизной 25—45°. Сход со склона скопившейся снежной массы обычно провоцируется климатическими причинами: резкой сменой погоды, дождями, а также механическими воздействиями на снежную массу. Иногда, в силу установившегося относительного равновесия между действующей силой трения и силой давления, сход лавины может инициироваться незначительным толчком (например, звуком ружейного выстрела или давлением на снег одного человека — горнолыжника, сноубордиста)
Решение
Моделирование сходы лавины происходит в двумерном пространстве. В качестве простейшей модели горы был взят прямоугольный треугольник, а в качестве снежной массы - большое количество элементов-кругов радиуса
,имитирующих отдельные частицы снежной массы.Целесообразно разделить движение шаров на 2 части: движение по наклонной плоскости и движение по горизонтальной поверхности.
При движении по наклонной плоскости шары скатываются со склона за счет силы тяжести
.
После того, как шары скатились со склона, они продолжают движение по горизонтальной поверхности, замедляясь за счет силы трения
.Визуализация программы
Файл "dl_avalanche_finish.js"
1 function main_dl_avalanche_finish() {
2
3 var ctx = canvas_avalanche_finish.getContext("2d");
4 var width = canvas_avalanche_finish.width;
5 var height = canvas_avalanche_finish.height;
6
7 ctx.fillStyle="#8888ff";
8 // координаты шара
9 var vx = 2, vy = 2; // скорость шара
10 var r = 5; // радиус шара
11 var grass_height = 5;
12 var mountian_length = 400;
13 var sin_alpha_1 = 0.5;
14 var cos_alpha_1 = 0.866;
15 var sun_r = 50;
16 var rx = 0, ry = mountian_length * sin_alpha_1 / cos_alpha_1 - r;
17
18 var g = 2;
19 var dt = 0.1;
20 var m = 1;
21 var B = 0.06;
22 var B2 = 0.09;
23 var fy = 0;
24 var fx = 0;
25
26 function step() {
27 tick();
28 draw();
29 }
30
31 function tick() {
32 if (rx + r > 0 && rx - r < mountian_length && ry < (height - grass_height - mountian_length * sin_alpha_1 / cos_alpha_1) * rx
33 + mountian_length * sin_alpha_1 / cos_alpha_1) {
34 fy = m * g - B * vy;
35 fx = m * g - B * vx;
36 vy = vy + fy / m * dt * sin_alpha_1;
37 vx = vx + fx / m * dt * cos_alpha_1;
38 ry = ry + vy * dt * sin_alpha_1;
39 rx = rx + vx * dt * cos_alpha_1;
40 }
41 if (rx - r > mountian_length){
42 fx = - B2 * vx;
43 vx = vx + fx / m * dt;
44 rx = rx + vx * dt;
45 }
46 //if (rx - r < 0 || rx + r > width) vx = -vx;
47 //if (ry - r < 0) vy = -vy;
48 //rx = rx + vx;
49 //ry = ry + vy;
50 }
51
52 function draw() {
53
54 ctx.clearRect(0, 0, width, height); //clear
55 ctx.beginPath();
56
57 ctx.fillStyle="#49b9ed"; //sky
58 ctx.beginPath();
59 ctx.fillRect(0, 0, width, height);
60
61 ctx.fillStyle="#16a600"; //grass
62 ctx.beginPath();
63 ctx.fillRect(0, height - grass_height, width, height);
64
65 ctx.fillStyle="#57564c"; //mountain
66 ctx.beginPath();
67 ctx.moveTo(0, height - grass_height);
68 ctx.lineTo(mountian_length, height - grass_height);
69 ctx.lineTo(0, mountian_length * sin_alpha_1 / cos_alpha_1);
70 ctx.lineTo(0, height - grass_height);
71 ctx.fill();
72
73
74 ctx.fillStyle="#fff200"; //sun
75 ctx.beginPath();
76 ctx.arc(width, 0, sun_r, 0, 2 * Math.PI);
77 ctx.fill();
78
79 ctx.fillStyle="#e6e5d1"; //snow
80 ctx.beginPath();
81 ctx.arc(rx, ry, r, 0, 2 * Math.PI);
82 ctx.fill();
83
84
85 }
86
87 setInterval(step, 1000 / 60); // функция step будет запускаться 60 раз в секунду (60 раз / 1000 мс)
88
89 }
Файл "dl_avalanche_finish.html"
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>Avalanche</title>
5 <script src="dl_avalanche_finish.js"></script>
6 </head>
7 <body onload="main_dl_avalanche_finish();">
8 <canvas id="canvas_avalanche_finish" width="800" height="400" style="border: 1px solid #000000"></canvas>
9 </body>
10 </html>
Обсуждение результатов и выводы
Скачать отчет
Скачать презентацию: