Редактирование: КП: Динамика лавины
Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 49: | Строка 49: | ||
ctx.fillStyle="#8888ff"; | ctx.fillStyle="#8888ff"; | ||
− | + | ||
− | + | var vx = 2, vy = 2; // скорость шара | |
+ | var r = 5; // радиус шара | ||
+ | |||
var grass_height = 5; | var grass_height = 5; | ||
var mountian_length = 400; | var mountian_length = 400; | ||
+ | |||
var sin_alpha_1 = 0.5; | var sin_alpha_1 = 0.5; | ||
var cos_alpha_1 = 0.866; | var cos_alpha_1 = 0.866; | ||
+ | |||
var sun_r = 50; | var sun_r = 50; | ||
− | var | + | var rx = 0, ry = mountian_length * sin_alpha_1 / cos_alpha_1 - r; |
− | |||
− | |||
var g = 2; | var g = 2; | ||
− | var dt = 0. | + | var dt = 0.1; |
var m = 1; | var m = 1; | ||
var B = 0.06; | var B = 0.06; | ||
var B2 = 0.09; | var B2 = 0.09; | ||
− | var | + | var fy = 0; |
− | + | var fx = 0; | |
− | |||
− | |||
− | |||
− | var | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
function step() { | function step() { | ||
Строка 85: | Строка 76: | ||
function tick() { | function tick() { | ||
− | if ( | + | if (rx + r > 0 && rx - r < mountian_length && ry < (height - grass_height - mountian_length * sin_alpha_1 / cos_alpha_1) |
− | + | * rx + mountian_length * sin_alpha_1 / cos_alpha_1) { | |
− | + | fy = m * g - B * vy; | |
− | + | fx = m * g - B * vx; | |
− | + | ||
− | + | vy = vy + fy / m * dt * sin_alpha_1; | |
− | + | vx = vx + fx / m * dt * cos_alpha_1; | |
− | + | ||
− | + | ry = ry + vy * dt * sin_alpha_1; | |
+ | rx = rx + vx * dt * cos_alpha_1; | ||
} | } | ||
− | if ( | + | if (rx - r > mountian_length){ |
− | + | ||
− | + | fx = - B2 * vx; | |
− | + | vx = vx + fx / m * dt; | |
− | + | rx = rx + vx * dt; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
Строка 158: | Строка 119: | ||
ctx.fillStyle="#fff200"; //sun | ctx.fillStyle="#fff200"; //sun | ||
− | + | ctx.beginPath(); | |
− | + | ctx.arc(width, 0, sun_r, 0, 2 * Math.PI); | |
− | + | ctx.fill(); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ctx.fillStyle="#e6e5d1"; // | + | ctx.fillStyle="#e6e5d1"; //snow |
ctx.beginPath(); | ctx.beginPath(); | ||
− | + | ctx.arc(rx, ry, r, 0, 2 * Math.PI); | |
− | + | ctx.fill(); | |
Строка 183: | Строка 134: | ||
} | } | ||
+ | |||
</syntaxhighlight> | </syntaxhighlight> | ||