a1=Math.atan(k1*(x02-g2*x01)/(v02-g2*v01));//начальныеусловияфаз
a2=Math.atan(k2*(x02-g1*x01)/(v02-g1*v01));
A11=(x02-g2*x01)/(g1-g2)/Math.sin(a1);//начальныеусловияамплитуд
A21=(x02-g1*x01)/(g2-g1)/Math.sin(a2);
base.position.set(0,0,0);
lbase.position.set(-bw/2,0,0);
rbase.position.set(bw/2,0,0);
disk1.position.set(x01,rc+bh/2,0);
disk2.position.set(x02,rc+bh/2,0);
disk1.rotation.x=Math.PI/2;
disk2.rotation.x=Math.PI/2;
spotLight.position.set(50,60,50);
for(var k=1;k<=3;k++)//первоначальныеусловиядлязвеньевпружин
for(var i=0;i<=n;i++){
var nexus=scene.getObjectByName(k+"-"+i);
nexus.position.set(0,rc+bh/2,0);
}
}
function initStats() {
var stats = new Stats();
stats.setMode(0);
stats.domElement.style.position='absolute';
stats.domElement.style.left='0px';
stats.domElement.style.top='0px';
document.getElementById("Stats-output").appendChild(stats.domElement);
return stats;
}
}
window.onload=init;
</script>
</body>
</html>
Заключение
Вданнойработеяпровелисследованиесвободныхколебанийсистемысдвумястепенямисвободы, азатемвизуализировалрешениеспомощьюбиблиотекиTHREE.js.
Полученныерезультатывыглядяттак:
Опции программы:
· dt - шагвремени, которыйопределяетскоростьанимации
· и ,и - начальныеположенияискоростидисков
· ,,,, - параметрысистемы
· Pause, resume, redraw - кнопкидляуправленияпрограммой
Список исползованных источников
1.ЯблонскийА.А. Сборникзадачдлякурсовыхработпотеоретическоймеханике: Учебное
пособиедлятехническихвузов. - 5-еизд., исправленное - М.: Интеграл-Пресс, 2000. - 384 с.
2.Dirksen J. - «Learning Three.js. The JavaScript 3D Library for WebGL (2nd Edition)» - М.:
Packt Publishing, 2015. - 382 с.