Редактирование: Chain v2
Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
− | [[ | + | [[ТМ|Кафедра ТМ]] > [[Программирование]] > [[Программирование и моделирование в Интернет|Интернет]] > [[JavaScript-программирование|JavaScript]] > [[JavaScript - Цепь|Цепь]] > '''Chain v2''' <HR> |
− | + | <addscript src=Chain_v2_release/><addscript src=jquery_min_new/><addscript src=TM_v2/><addscript src=jquery_flot/><addscript src=jquery_flot_axislabels/> | |
+ | <htmlet nocache="yes">Chain_v2_TM</htmlet> | ||
Скачать программу: [[Медиа:Chain_v2_release.zip|Chain_v2_release.zip]] | Скачать программу: [[Медиа:Chain_v2_release.zip|Chain_v2_release.zip]] | ||
− | + | Текст программы на языке JavaScript (разработчик [[Цветков Денис]]): <toggledisplay status=hide showtext="Показать↓" hidetext="Скрыть↑" linkstyle="font-size:default"> | |
− | |||
Файл '''"Chain_v2_release.js"''' | Файл '''"Chain_v2_release.js"''' | ||
− | < | + | <source lang="javascript" first-line="1"> |
function MainChain(canvas) { | function MainChain(canvas) { | ||
Строка 16: | Строка 16: | ||
document.oncontextmenu=function(e){return false}; // блокировка контекстного меню | document.oncontextmenu=function(e){return false}; // блокировка контекстного меню | ||
− | + | const Pi = 3.1415926; // число "пи" | |
− | + | const m0 = 1; // масштаб массы | |
− | + | const T0 = 1; // масштаб времени (период колебаний исходной системы) | |
− | + | const a0 = 1; // масштаб расстояния (диаметр шара) | |
− | + | const k0 = 2 * Pi / T0; // масштаб частоты | |
− | + | const C0 = m0 * k0 * k0; // масштаб жесткости | |
// *** Задание физических параметров *** | // *** Задание физических параметров *** | ||
− | + | const Ny = 5; // Число шаров, помещающихся по вертикали в окно (задает размер шара относительно размера окна) | |
− | + | const scale = canvas.height / Ny / a0; // масштабный коэффициент для перехода от расчетных к экранным координатам | |
− | + | const m = 1 * m0; // масса | |
− | + | const C = 1 * C0; // жесткость | |
var num = 24; // начальное количество частиц | var num = 24; // начальное количество частиц | ||
// *** Задание вычислительных параметров *** | // *** Задание вычислительных параметров *** | ||
− | + | const fps = 50; // frames per second - число кадров в секунду (качечтво отображения) | |
− | + | const spf = 100; // steps per frame - число шагов интегрирования между кадрами (скорость расчета) | |
− | + | const dt = 0.045 * T0 / fps; // шаг интегрирования (качество расчета) | |
// Выполнение программы | // Выполнение программы | ||
Строка 91: | Строка 91: | ||
var sumVx2 = 0; | var sumVx2 = 0; | ||
for (var i2 = 1; i2 < num+1; i2++) sumVx2 += balls[i2].vx*balls[i2].vx; | for (var i2 = 1; i2 < num+1; i2++) sumVx2 += balls[i2].vx*balls[i2].vx; | ||
− | + | const sigma2 = sumVx2 / num; | |
− | + | const omega2 = C/m; | |
− | + | const yLabel = 2*Math.sqrt(sigma2/omega2) *(num/8); // в конце - коэффициент | |
uGraph = new TM_graph( // определить график | uGraph = new TM_graph( // определить график | ||
Строка 184: | Строка 184: | ||
setInterval(control, 1000/fps); | setInterval(control, 1000/fps); | ||
} | } | ||
− | </ | + | </source> |
Файл '''"Chain_v2_release.html"''' | Файл '''"Chain_v2_release.html"''' | ||
− | < | + | <source lang="html" first-line="1"> |
<!DOCTYPE html> | <!DOCTYPE html> | ||
<html> | <html> | ||
Строка 210: | Строка 210: | ||
Конфигурации (наведите на кнопку,<br>чтобы увидеть описание):<br> | Конфигурации (наведите на кнопку,<br>чтобы увидеть описание):<br> | ||
<input type="button" title="Случайная скорость у каждой частички" style="width: 130px" name="" onclick="app.newSystem(app.conf_random);return false;" value="Random"/><br> | <input type="button" title="Случайная скорость у каждой частички" style="width: 130px" name="" onclick="app.newSystem(app.conf_random);return false;" value="Random"/><br> | ||
− | <input type="button" title=" | + | <input type="button" title="Начальное перемещение частиц задается с помощью функции синуса" style="width: 130px" name="" onclick="app.newSystem(app.conf_sin);return false;" value="Sin"/><br> |
− | <input type="button" title=" | + | <input type="button" title="Одна частичка сдвинута, остальные находятся в положении равновесия" style="width: 130px" name="" onclick="app.newSystem(app.conf_one);return false;" value="One particle shift"/><br> |
− | <input type="button" title=" | + | <input type="button" title="Начальное перемещение частиц задается ступеньками - две частички сдвинуты, две не сдвинуты" style="width: 130px" name="" onclick="app.newSystem(app.conf_stair2);return false;" value="Stairs (2 particles)"/><br> |
− | <input type="button" title=" | + | <input type="button" title="Начальное перемещение частиц задается ступеньками - три частички сдвинуты, три не сдвинуты" style="width: 130px" name="" onclick="app.newSystem(app.conf_stair3);return false;" value="Stairs (3 particles)"/><br> |
− | <input type="button" title=" | + | <input type="button" title="Начальное перемещение частиц задается холмом, холм занимает 1/4 часть цепи" style="width: 130px" name="" onclick="app.newSystem(app.conf_hill);return false;" value="Hill"/><br> |
<br><br> | <br><br> | ||
Количество частиц:<br> | Количество частиц:<br> | ||
Строка 225: | Строка 225: | ||
</body> | </body> | ||
</html> | </html> | ||
− | </ | + | </source> |
− | </ | + | </toggledisplay> |
− | |||
− | |||
[[Category: Программирование]] | [[Category: Программирование]] | ||
+ | [[Category: JavaScript]] |