Редактирование: Курсовой проект: Колебания груза на пружине.

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 14: Строка 14:
 
'''Текст программы на языке JavaScript:'''
 
'''Текст программы на языке JavaScript:'''
 
<div class="mw-collapsible mw-collapsed">
 
<div class="mw-collapsible mw-collapsed">
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
 
function main() {
 
function main() {
 
 
var ctx = canv.getContext("2d");
 
var ctx = canv.getContext("2d");
 
 
var ctxE = ENERGY.getContext("2d");
 
var ctxE = ENERGY.getContext("2d");
 
 
var ctxVX = vxg.getContext("2d");
 
var ctxVX = vxg.getContext("2d");
 
 
var w = canv.width;
 
var w = canv.width;
 
 
var h = canv.height;
 
var h = canv.height;
 
 
var button=document.getElementById("button");
 
var button=document.getElementById("button");
 
 
var paint=document.getElementById("button2");
 
var paint=document.getElementById("button2");
 
 
var stopbutton=document.getElementById("button3");
 
var stopbutton=document.getElementById("button3");
 
 
var a=0;
 
var a=0;
 
 
var m=0;
 
var m=0;
 
 
var k=0;
 
var k=0;
 
 
var s=0;
 
var s=0;
 
 
var l=0;
 
var l=0;
 
 
var j=0;
 
var j=0;
 
 
var b=0;
 
var b=0;
 
 
var i=0;
 
var i=0;
 
 
var x=0;
 
var x=0;
 
 
var y=0;
 
var y=0;
 
 
var x1=0;
 
var x1=0;
 
 
var y1=0;
 
var y1=0;
 
 
var v=0;
 
var v=0;
 
 
var x2=0;
 
var x2=0;
 
 
var y2=0;
 
var y2=0;
 
 
//var abs=0;
 
//var abs=0;
 
 
var timerId=0;
 
var timerId=0;
 
 
var Ek=0;
 
var Ek=0;
 
 
var Ep=0;
 
var Ep=0;
 
 
var E=0;
 
var E=0;
 
 
var bl=1;
 
var bl=1;
 
 
var x0=0;
 
var x0=0;
 
 
var Vm=0;
 
var Vm=0;
 
 
paint.onclick=function(){
 
paint.onclick=function(){
 
 
bl=1;
 
bl=1;
 
 
paint.value="Refresh";
 
paint.value="Refresh";
 
 
button.value="Start";
 
button.value="Start";
 
 
ctxE.clearRect(0,0,500,500);
 
ctxE.clearRect(0,0,500,500);
 
 
ctxVX.clearRect(0,0,500,500);
 
ctxVX.clearRect(0,0,500,500);
 
 
ctxE.beginPath();
 
ctxE.beginPath();
 
 
ctxE.moveTo(20,20);
 
ctxE.moveTo(20,20);
 
 
ctxE.lineTo(20,230);
 
ctxE.lineTo(20,230);
 
 
ctxE.lineTo(480,230);
 
ctxE.lineTo(480,230);
 
 
ctxE.lineTo(475,225);
 
ctxE.lineTo(475,225);
 
 
ctxE.moveTo(480,230);
 
ctxE.moveTo(480,230);
 
 
ctxE.lineTo(475,235);
 
ctxE.lineTo(475,235);
 
 
ctxE.moveTo(20,20);
 
ctxE.moveTo(20,20);
 
 
ctxE.lineTo(25,25);
 
ctxE.lineTo(25,25);
 
 
ctxE.moveTo(20,20);
 
ctxE.moveTo(20,20);
 
 
ctxE.lineTo(15,25);
 
ctxE.lineTo(15,25);
 
 
ctxE.stroke();
 
ctxE.stroke();
 
 
ctxE.fillText("Energy",30,25);
 
ctxE.fillText("Energy",30,25);
 
 
ctxE.fillText("Time",470,245);
 
ctxE.fillText("Time",470,245);
 
 
ctxVX.beginPath();
 
ctxVX.beginPath();
 
 
ctxVX.moveTo(250,20);
 
ctxVX.moveTo(250,20);
 
 
ctxVX.lineTo(250,230);
 
ctxVX.lineTo(250,230);
 
 
ctxVX.moveTo(20,125);
 
ctxVX.moveTo(20,125);
 
 
ctxVX.lineTo(480,125);
 
ctxVX.lineTo(480,125);
 
 
ctxVX.lineTo(475,120);
 
ctxVX.lineTo(475,120);
 
 
ctxVX.moveTo(480,125);
 
ctxVX.moveTo(480,125);
 
 
ctxVX.lineTo(475,130);
 
ctxVX.lineTo(475,130);
 
 
ctxVX.moveTo(250,20);
 
ctxVX.moveTo(250,20);
 
 
ctxVX.lineTo(255,25);
 
ctxVX.lineTo(255,25);
 
 
ctxVX.moveTo(250,20);
 
ctxVX.moveTo(250,20);
 
 
ctxVX.lineTo(245,25);
 
ctxVX.lineTo(245,25);
 
 
ctxVX.stroke();
 
ctxVX.stroke();
 
 
ctxVX.fillText("V",255,25);
 
ctxVX.fillText("V",255,25);
 
 
ctxVX.fillText("x",470,140);
 
ctxVX.fillText("x",470,140);
 
 
if (x!=0) {clearInterval(timerId);}
 
if (x!=0) {clearInterval(timerId);}
 
 
i=0;
 
i=0;
 
 
x=0;
 
x=0;
 
 
y=0;
 
y=0;
 
 
console.clear();
 
console.clear();
 
 
ctx.clearRect(0,0,w,h);
 
ctx.clearRect(0,0,w,h);
 
 
document.getElementById("velocity").value=0;
 
document.getElementById("velocity").value=0;
 
 
document.getElementById("absolute").value=0;
 
document.getElementById("absolute").value=0;
 
 
b=parseFloat(document.getElementById("res").value);
 
b=parseFloat(document.getElementById("res").value);
 
 
l=parseFloat(document.getElementById("lng").value);
 
l=parseFloat(document.getElementById("lng").value);
 
 
s=parseFloat(document.getElementById("brt").value);
 
s=parseFloat(document.getElementById("brt").value);
 
 
m=parseFloat(document.getElementById("mass").value);
 
m=parseFloat(document.getElementById("mass").value);
 
 
k=parseFloat(document.getElementById("kfc").value);
 
k=parseFloat(document.getElementById("kfc").value);
 
 
a=parseFloat(document.getElementById("amp").value);
 
a=parseFloat(document.getElementById("amp").value);
 
 
if (s>l) {alert("ERROR!!! Spring coord>rod's length!!!");}
 
if (s>l) {alert("ERROR!!! Spring coord>rod's length!!!");}
 
 
else{
 
else{
 
 
if (a>95) {alert("ERROR!!! Amplitude is too big(>95)!!!");}
 
if (a>95) {alert("ERROR!!! Amplitude is too big(>95)!!!");}
 
 
else{
 
else{
 
 
ctx.beginPath();
 
ctx.beginPath();
 
 
ctx.arc(25+l,125,10,0,2*Math.PI);
 
ctx.arc(25+l,125,10,0,2*Math.PI);
 
 
ctx.fill();
 
ctx.fill();
 
+
ctx.moveTo(20,20);
                ctx.moveTo(20,20);
 
 
 
 
ctx.lineTo(980,20);
 
ctx.lineTo(980,20);
 
 
ctx.moveTo(20,20);
 
ctx.moveTo(20,20);
 
 
ctx.lineTo(20,230);
 
ctx.lineTo(20,230);
 
 
ctx.moveTo(20,120);
 
ctx.moveTo(20,120);
 
 
ctx.lineTo(25,125);
 
ctx.lineTo(25,125);
 
 
ctx.lineTo(20,130);
 
ctx.lineTo(20,130);
 
 
ctx.moveTo(25,125);
 
ctx.moveTo(25,125);
 
 
ctx.lineTo(25+l,125);
 
ctx.lineTo(25+l,125);
 
 
ctx.moveTo(25+s,20);
 
ctx.moveTo(25+s,20);
 
 
ctx.lineTo(25+s,22,5);
 
ctx.lineTo(25+s,22,5);
 
 
while (j<20){
 
while (j<20){
 
 
j=j+1;
 
j=j+1;
 
 
ctx.lineTo(25+Math.pow(-1,j)*5+s,20+5*j);
 
ctx.lineTo(25+Math.pow(-1,j)*5+s,20+5*j);
 
 
}
 
}
 
 
j=0;
 
j=0;
 
 
ctx.lineTo(25+s,122,5);
 
ctx.lineTo(25+s,122,5);
 
 
ctx.lineTo(25+s,125);
 
ctx.lineTo(25+s,125);
 
 
ctx.stroke();
 
ctx.stroke();
 
 
}
 
}
 
 
}
 
}
 
 
}
 
}
 
 
 
 
 
function start () {
 
function start () {
 
 
ctx.clearRect(0,0,1000,250);
 
ctx.clearRect(0,0,1000,250);
 
 
var w=Math.sqrt(3*k*s*s/(m*l*l));
 
var w=Math.sqrt(3*k*s*s/(m*l*l));
 
 
var beta=3*b/(2*m*l);
 
var beta=3*b/(2*m*l);
 
 
var A=a*Math.exp(-i*beta);
 
var A=a*Math.exp(-i*beta);
 
 
var x0=m*9.8*l/(k*s);
 
var x0=m*9.8*l/(k*s);
 
 
x=Math.exp(-beta*i)*a*Math.sin(i*w);
 
x=Math.exp(-beta*i)*a*Math.sin(i*w);
 
 
y=l*(1-Math.cos(Math.asin(x/l)));
 
y=l*(1-Math.cos(Math.asin(x/l)));
 
 
x1=a*Math.exp(-i*beta)*(-beta*Math.sin(w*i)+w*Math.cos(w*i));
 
x1=a*Math.exp(-i*beta)*(-beta*Math.sin(w*i)+w*Math.cos(w*i));
 
 
y1=x*x1/(l*Math.sqrt(l*l-x*x));
 
y1=x*x1/(l*Math.sqrt(l*l-x*x));
 
 
v=Math.sqrt(x1*x1+y1*y1);
 
v=Math.sqrt(x1*x1+y1*y1);
 
 
x2=a*Math.exp(-i*beta)*((beta*beta-w*w)*Math.sin(w*i)-2*beta*w*Math.cos(w*i));
 
x2=a*Math.exp(-i*beta)*((beta*beta-w*w)*Math.sin(w*i)-2*beta*w*Math.cos(w*i));
 
 
y2=(x1*x1+x*x2+x*x1*x*l/Math.sqrt(l*l-x*x))/(l*l*(l*l-x*x));
 
y2=(x1*x1+x*x2+x*x1*x*l/Math.sqrt(l*l-x*x))/(l*l*(l*l-x*x));
 
 
abs=Math.sqrt(x2*x2+y2*y2);
 
abs=Math.sqrt(x2*x2+y2*y2);
 
 
Ek=m*v*v/2;
 
Ek=m*v*v/2;
 
 
Vm=Math.sqrt(k*A*A*s*s/(l*l*m)+2*9.8*A);
 
Vm=Math.sqrt(k*A*A*s*s/(l*l*m)+2*9.8*A);
 
 
Ep=m*(Vm*Vm-v*v)/2//-k*x0*x0*s*s/(2*l*l);
 
Ep=m*(Vm*Vm-v*v)/2//-k*x0*x0*s*s/(2*l*l);
 
 
E=Ep+Ek;
 
E=Ep+Ek;
 
 
ctxE.beginPath();
 
ctxE.beginPath();
 
 
ctxE.strokeStyle='rgba(255,0,0,1)';
 
ctxE.strokeStyle='rgba(255,0,0,1)';
 
 
ctxE.arc(20+i*10,230-Ek/15,1,0,2*Math.PI);
 
ctxE.arc(20+i*10,230-Ek/15,1,0,2*Math.PI);
 
 
ctxE.stroke();
 
ctxE.stroke();
 
 
ctxE.beginPath();
 
ctxE.beginPath();
 
 
ctxE.strokeStyle='rgba(0,0,255,1)';
 
ctxE.strokeStyle='rgba(0,0,255,1)';
 
 
ctxE.arc(20+i*10,230-Ep/15,1,0,2*Math.PI);
 
ctxE.arc(20+i*10,230-Ep/15,1,0,2*Math.PI);
 
+
ctxE.stroke();
                        ctxE.stroke();
 
 
 
 
ctxE.beginPath();
 
ctxE.beginPath();
 
 
ctxE.strokeStyle='rgba(0,255,0,1)';
 
ctxE.strokeStyle='rgba(0,255,0,1)';
 
 
ctxE.arc(20+i*10,230-E/15,1,0,2*Math.PI);
 
ctxE.arc(20+i*10,230-E/15,1,0,2*Math.PI);
 
 
ctxE.stroke();
 
ctxE.stroke();
 
 
ctxE.strokeStyle='rgba(0,0,0,1)';
 
ctxE.strokeStyle='rgba(0,0,0,1)';
 
 
ctxVX.beginPath();
 
ctxVX.beginPath();
 
 
ctxVX.arc(250+2*x,125-2*x1,1,0,2*Math.PI);
 
ctxVX.arc(250+2*x,125-2*x1,1,0,2*Math.PI);
 
 
ctxVX.fill();
 
ctxVX.fill();
 
 
document.getElementById("velocity").value=Math.round(v*100)/100;
 
document.getElementById("velocity").value=Math.round(v*100)/100;
 
 
document.getElementById("absolute").value=Math.round(abs*100)/100;
 
document.getElementById("absolute").value=Math.round(abs*100)/100;
 
 
i=i+0.02;
 
i=i+0.02;
 
 
console.log(i,x,x1);
 
console.log(i,x,x1);
 
 
ctx.beginPath();
 
ctx.beginPath();
 
 
 
 
 
 
// ctx.setLineDash([5, 3])
 
// ctx.setLineDash([5, 3])
 
 
// ctx.moveTo(25+s,20);
 
// ctx.moveTo(25+s,20);
 
 
// ctx.lineTo(25+s-(y*s/l),125+(x*s/l));//пружина
 
// ctx.lineTo(25+s-(y*s/l),125+(x*s/l));//пружина
 
 
//ctx.stroke();
 
//ctx.stroke();
 
 
ctx.moveTo(25+s,20);
 
ctx.moveTo(25+s,20);
 
 
ctx.lineTo(25+s-y*s/(21*l),22.5+x*s/(21*l));
 
ctx.lineTo(25+s-y*s/(21*l),22.5+x*s/(21*l));
 
 
while (j<20){
 
while (j<20){
 
 
j=j+1;
 
j=j+1;
 
 
ctx.lineTo(25+Math.pow(-1,j)*5+s-j*y*s/(21*l),20+5*j+j*x*s/(21*l));
 
ctx.lineTo(25+Math.pow(-1,j)*5+s-j*y*s/(21*l),20+5*j+j*x*s/(21*l));
 
 
}
 
}
 
 
j=0;
 
j=0;
 
 
ctx.lineTo(25+s-20*y*s/(21*l),122.5+20*x*s/(21*l));
 
ctx.lineTo(25+s-20*y*s/(21*l),122.5+20*x*s/(21*l));
 
 
ctx.lineTo(25+s-y*s/l,125+x*s/l);
 
ctx.lineTo(25+s-y*s/l,125+x*s/l);
 
 
ctx.moveTo(20,20);
 
ctx.moveTo(20,20);
 
 
ctx.lineTo(980,20);
 
ctx.lineTo(980,20);
 
 
ctx.moveTo(20,20);
 
ctx.moveTo(20,20);
 
 
ctx.lineTo(20,230);
 
ctx.lineTo(20,230);
 
 
ctx.moveTo(20,120);
 
ctx.moveTo(20,120);
 
 
ctx.lineTo(25,125);
 
ctx.lineTo(25,125);
 
 
ctx.lineTo(20,130);
 
ctx.lineTo(20,130);
 
 
ctx.moveTo(25,125);
 
ctx.moveTo(25,125);
 
 
ctx.lineTo(25+l-y,125+x); //стержень
 
ctx.lineTo(25+l-y,125+x); //стержень
 
 
ctx.stroke();
 
ctx.stroke();
 
 
ctx.beginPath();
 
ctx.beginPath();
 
 
ctx.arc(25+l-y,125+x,10,0,2*Math.PI);//шар
 
ctx.arc(25+l-y,125+x,10,0,2*Math.PI);//шар
 
 
ctx.fill();
 
ctx.fill();
 
 
 
 
}
 
}
 
 
button.onclick=function(){
 
button.onclick=function(){
 
 
console.clear();
 
console.clear();
 
 
b=parseFloat(document.getElementById("res").value);
 
b=parseFloat(document.getElementById("res").value);
 
 
l=parseFloat(document.getElementById("lng").value);
 
l=parseFloat(document.getElementById("lng").value);
 
 
s=parseFloat(document.getElementById("brt").value);
 
s=parseFloat(document.getElementById("brt").value);
 
 
m=parseFloat(document.getElementById("mass").value);
 
m=parseFloat(document.getElementById("mass").value);
 
 
k=parseFloat(document.getElementById("kfc").value);
 
k=parseFloat(document.getElementById("kfc").value);
 
 
a=parseFloat(document.getElementById("amp").value);
 
a=parseFloat(document.getElementById("amp").value);
 
 
if (s>l) {alert("ERROR!!! Spring coord>rod's length!!!");}
 
if (s>l) {alert("ERROR!!! Spring coord>rod's length!!!");}
 
 
else{
 
else{
 
 
if (a>95) {alert("ERROR!!! Amplitude is too big(>95)!!!");}
 
if (a>95) {alert("ERROR!!! Amplitude is too big(>95)!!!");}
 
 
else{
 
else{
 
 
if (bl=0) {
 
if (bl=0) {
 
 
ctxE.clearRect(0,0,500,500);
 
ctxE.clearRect(0,0,500,500);
 
 
ctxVX.clearRect(0,0,500,500);
 
ctxVX.clearRect(0,0,500,500);
 
 
}
 
}
 
 
ctxE.beginPath();
 
ctxE.beginPath();
 
 
ctxE.moveTo(20,20);
 
ctxE.moveTo(20,20);
 
 
ctxE.lineTo(20,230);
 
ctxE.lineTo(20,230);
 
 
ctxE.lineTo(480,230);
 
ctxE.lineTo(480,230);
 
 
ctxE.lineTo(475,225);
 
ctxE.lineTo(475,225);
 
 
ctxE.moveTo(480,230);
 
ctxE.moveTo(480,230);
 
 
ctxE.lineTo(475,235);
 
ctxE.lineTo(475,235);
 
 
ctxE.moveTo(20,20);
 
ctxE.moveTo(20,20);
 
 
ctxE.lineTo(25,25);
 
ctxE.lineTo(25,25);
 
 
ctxE.moveTo(20,20);
 
ctxE.moveTo(20,20);
 
 
ctxE.lineTo(15,25);
 
ctxE.lineTo(15,25);
 
 
ctxE.stroke();
 
ctxE.stroke();
 
 
ctxE.fillText("Energy",30,25);
 
ctxE.fillText("Energy",30,25);
 
 
ctxE.fillText("Time",470,245);
 
ctxE.fillText("Time",470,245);
 
 
ctxVX.beginPath();
 
ctxVX.beginPath();
 
 
ctxVX.moveTo(250,20);
 
ctxVX.moveTo(250,20);
 
 
ctxVX.lineTo(250,230);
 
ctxVX.lineTo(250,230);
 
 
ctxVX.moveTo(20,125);
 
ctxVX.moveTo(20,125);
 
 
ctxVX.lineTo(480,125);
 
ctxVX.lineTo(480,125);
 
 
ctxVX.lineTo(475,120);
 
ctxVX.lineTo(475,120);
 
 
ctxVX.moveTo(480,125);
 
ctxVX.moveTo(480,125);
 
 
ctxVX.lineTo(475,130);
 
ctxVX.lineTo(475,130);
 
 
ctxVX.moveTo(250,20);
 
ctxVX.moveTo(250,20);
 
 
ctxVX.lineTo(255,25);
 
ctxVX.lineTo(255,25);
 
 
ctxVX.moveTo(250,20);
 
ctxVX.moveTo(250,20);
 
 
ctxVX.lineTo(245,25);
 
ctxVX.lineTo(245,25);
 
 
ctxVX.stroke();
 
ctxVX.stroke();
 
 
ctxVX.fillText("V",255,25);
 
ctxVX.fillText("V",255,25);
 
 
ctxVX.fillText("x",470,140);
 
ctxVX.fillText("x",470,140);
 
 
timerId=setInterval(start,10);
 
timerId=setInterval(start,10);
 
 
 
 
stopbutton.onclick=function(){
 
stopbutton.onclick=function(){
 
 
button.value="Resume";
 
button.value="Resume";
 
 
bl=0;
 
bl=0;
 
 
clearInterval(timerId);
 
clearInterval(timerId);
 
 
}
 
}
 
 
console.clear();
 
console.clear();
 
 
}
 
}
 
 
}
 
}
 
 
}
 
}
 
}
 
}
</syntaxhighlight>
 
Вам запрещено изменять защиту статьи. Edit Создать редактором

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии Public Domain (см. Department of Theoretical and Applied Mechanics:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Отменить | Справка по редактированию  (в новом окне)