Редактирование: Периодические граничные условия

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

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 42: Строка 42:
 
===Результаты===
 
===Результаты===
 
<br />
 
<br />
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/Tenitskaya/OneBall/One_Ball.html |width=1400|height=450 |border=0 }}
+
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/Tenitskaya/OneBall/OneBall.html |width=1400|height=450 |border=0 }}
 
[[Медиа:OneBall.rar|Скачать архив]]
 
[[Медиа:OneBall.rar|Скачать архив]]
 
<div class="mw-collapsible mw-collapsed" style="width:100%" >
 
<div class="mw-collapsible mw-collapsed" style="width:100%" >
 
'''Текст программы на языке JavaScript (разработчик [[Теницкая Татьяна]]):''' <div class="mw-collapsible-content">
 
'''Текст программы на языке JavaScript (разработчик [[Теницкая Татьяна]]):''' <div class="mw-collapsible-content">
Файл '''"One_Ball.js"'''
+
Файл '''"OneBall.js"'''
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
function main_particle_1() {
 
function main_particle_1() {
 
   
 
   
 
     var ctx = canvas_particle_1.getContext("2d");
 
     var ctx = canvas_particle_1.getContext("2d");
var w_1 = canvas_particle_1.width;
+
var w = canvas_particle_1.width; //длина
     var h_1 = canvas_particle_1.height;
+
     var h = canvas_particle_1.height; //высота
var w = w_1/3;
 
var h = h_1/3;
 
 
 
var r = 7;
 
var N = 1;
 
var rx,ry; //Содержит координаты частиц по оси Х //Содержит координаты частиц по оси У
 
 
 
var rxI0,rxI1,rxI2,rxI3,rxI4,rxI5,rxI6,rxI7;
+
var w_1 = w/3;
var ryI0,ryI1,ryI2,ryI3,ryI4,ryI5,ryI6,ryI7;
+
var h_1 = h/3;
 
 
var vx,vy;
+
rx = new Array(0, w_1, 2*w_1, 0, w_1, 2*w_1, 0, w_1, 2*w_1);
var L;
+
ry = new Array(60, 60, 60, 60 + h_1, 60 + h_1, 60 + h_1, 60 + 2*h_1, 60 + 2*h_1, 60 + 2*h_1);
 
 
dt = 0.3;
+
// координаты шара
 +
    var v0 = 1;                      // скорость шара
 +
    var r = 7;                                // радиус шара
 +
    var dt = 5;
 
var alfa = 45 / 180 * Math.PI;
 
var alfa = 45 / 180 * Math.PI;
//0.04380741654852822
 
var v0 = 5;
 
vx = v0 * Math.cos(alfa);
 
vy = v0 * Math.sin(alfa);
 
 
 
rx = Math.random() * (w - 10);
 
ry = Math.random() * (h - 10);
 
 
 
var steps = 0;
 
var steps = 0;
+
 
 
 
function step()
 
function step()
{
+
{                        
 
tick();
 
tick();
 
draw();
 
draw();
 
}
 
}
var vGraph = new TM_graph(                  // определить график
+
 +
var vGraph = new TM_graph(                  // определить график
 
"#vGraph",                              // на html-элементе #vGraph
 
"#vGraph",                              // на html-элементе #vGraph
200,                                    // сколько шагов по оси "x" отображается
+
250,                                    // сколько шагов по оси "x" отображается
 
-1, 1,0.2);                          // мин. значение оси Y, макс. значение оси Y, шаг по оси Y
 
-1, 1,0.2);                          // мин. значение оси Y, макс. значение оси Y, шаг по оси Y
 
function tick()
 
{
 
 
 
steps += 1;
+
function tick()
 +
{
 +
for (i = 0; i < rx.length; i++)
 +
{
 +
vx = v0 * Math.cos(alfa);
 +
vy = v0 * Math.sin(alfa);
 +
steps+=1;
 
 
rx += vx*dt;
+
rx[i] += vx*dt;
ry += vy*dt;
+
ry[i] += vy*dt;
 +
 
 
if (rx >= w) {rx = rx - w;}
+
if (rx[i] >= w)  
if (rx <= 0) {rx = rx + w;}
+
{
if (ry >= h) {ry = ry - h;}
+
rx[i] = rx[i] - w;  
if (ry <= 0) {ry = ry + h;}
+
}
 +
 +
if (rx[i] <= 0)  
 +
{
 +
rx[i] = rx[i] + w;
 +
}
 
 
rxI0 = rx + w;
+
if (ry[i] >= h)
ryI0 = ry;
+
{
 
+
ry[i] = ry[i] - h;
rxI3 = rx + w;
+
}
ryI3 = ry + h;
+
 +
if (ry[i] <= 0)
 +
{
 +
ry[i] = ry[i] + h;
 +
}
 +
}
 
 
rxI6 = rx + w;
+
var L = (rx[8] * vy - ry[8] * vx)/240.4164;
ryI6 = ry + 2*h;
 
 
 
rxI1 = rx + 2*w;
+
console.log(L);
ryI1 = ry;
+
+
if (dt % 0.5 == 0) vGraph.graphIter(steps, L);   // подать данные на график
rxI4 = rx + 2*w;
+
}
ryI4 = ry + h;
+
+
rxI7 = rx + 2*w;
+
ryI7 = ry + 2*h;
 
 
rxI2 = rx;
 
ryI2 = ry + h;
 
 
rxI5 = rx;
 
ryI5 = ry + 2*h;
 
 
 
L = (rx * vy - ry * vx)/500;
 
if (steps % 1 == 0) vGraph.graphIter(steps, L); // подать данные на график
 
console.log(L);
 
 
 
}
 
 
 
 
function draw()  
 
function draw()  
 
{
 
{
ctx.clearRect(0, 0, w_1 , h_1);    // очистить экран
+
ctx.clearRect(0, 0, w , h );    // очистить экран
+
for (var i = 0; i < rx.length; i++)
var x = rx;           
+
{
var y = ry;
+
var xS = rx[i];           
ctx.beginPath();
+
var yS = ry[i];
ctx.fillStyle = "#00008B";
+
ctx.arc(x, y, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
 
 
var xI0 = rxI0;         
 
var yI0 = ryI0;
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI0, yI0, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
var xI1 = rxI1;         
 
var yI1 = ryI1;
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI1, yI1, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
var xI2 = rxI2;         
 
var yI2 = ryI2;
 
 
ctx.beginPath();
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.fillStyle = "#00008B";
ctx.arc(xI2, yI2, r , 0, 2 * Math.PI, false);
+
ctx.arc(xS, yS, r , 0, 2 * Math.PI, false);
ctx.closePath();
 
ctx.fill();
 
var xI3 = rxI3;         
 
var yI3 = ryI3;
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI3, yI3, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
var xI4 = rxI4;         
 
var yI4 = ryI4;
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI4, yI4, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
var xI5 = rxI5;         
 
var yI5 = ryI5;
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI5, yI5, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
var xI6 = rxI6;         
 
var yI6 = ryI6;
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI6, yI6, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
var xI7 = rxI7;         
 
var yI7 = ryI7;
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI7, yI7, r , 0, 2 * Math.PI, false);
 
 
ctx.closePath();
 
ctx.closePath();
 
ctx.fill();
 
ctx.fill();
 
 
+
ctx.beginPath();                               // начать рисование
ctx.beginPath();                             // начать рисование
 
 
ctx.fillStyle="#000000";
 
ctx.fillStyle="#000000";
ctx.moveTo(w, 0);                         // переместить "карандаш" в точку  
+
ctx.moveTo(w_1, 0);                             // переместить "карандаш" в точку  
ctx.lineTo(w, h_1);                         // нарисовать "карандашом" линию до точки  
+
ctx.lineTo(w_1, h);                           // нарисовать "карандашом" линию до точки  
 
ctx.stroke();
 
ctx.stroke();
 
 
 
ctx.beginPath();
 
ctx.beginPath();
 
ctx.fillStyle="#000000";
 
ctx.fillStyle="#000000";
ctx.moveTo(2 * w, 0);                             
+
ctx.moveTo(2*w_1, 0);                             
ctx.lineTo(2 * w, h_1);                             
+
ctx.lineTo(2*w_1, h);                             
 
ctx.stroke();
 
ctx.stroke();
 
 
 
ctx.beginPath();   
 
ctx.beginPath();   
 
ctx.fillStyle="#000000";
 
ctx.fillStyle="#000000";
ctx.moveTo(0, h);                             
+
ctx.moveTo(0, h_1);                             
ctx.lineTo(w_1, h);                             
+
ctx.lineTo(w, h_1);                             
 
ctx.stroke();
 
ctx.stroke();
 
 
 
ctx.beginPath();  
 
ctx.beginPath();  
 
ctx.fillStyle="#000000";
 
ctx.fillStyle="#000000";
ctx.moveTo(0, 2 * h);                             
+
ctx.moveTo(0, 2*h_1);                             
ctx.lineTo(w_1, 2 * h);                             
+
ctx.lineTo(w, 2*h_1);                             
 
ctx.stroke();
 
ctx.stroke();
 +
 +
}
 
}
 
}
+
setInterval(step, 1000/20);              
+
 +
setInterval(step, 1000/100);               // функция step будет запускаться 100 раз в секунду (100 раз / 1000 мс)
 +
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 446: Строка 382:
 
</div>
 
</div>
 
 
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/Tenitskaya/NBalls/NNN.html |width=1000|height=450|border=0 }}<br />
+
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/Tenitskaya/NBalls/NBalls.html |width=1400|height=450 |border=0 }}
 
+
[[Медиа:NBalls.rar|Скачать архив]]
[[Медиа:NNN.rar|Скачать архив]]
 
 
<div class="mw-collapsible mw-collapsed" style="width:100%" >
 
<div class="mw-collapsible mw-collapsed" style="width:100%" >
 
'''Текст программы на языке JavaScript (разработчик [[Теницкая Татьяна]]):''' <div class="mw-collapsible-content">
 
'''Текст программы на языке JavaScript (разработчик [[Теницкая Татьяна]]):''' <div class="mw-collapsible-content">
Файл '''"NNN.js"'''
+
Файл '''"NBalls.js"'''
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
function main_particle_1() {
+
function main_particle_1(canvas_particle_1)//,canvas_particle_2,canvas_particle_3,canvas_particle_4,canvas_particle_5,canvas_particle_6,canvas_particle_7,canvas_particle_8,canvas_particle_9) {
   
+
  {
 +
 
     var ctx = canvas_particle_1.getContext("2d");
 
     var ctx = canvas_particle_1.getContext("2d");
var w_1 = canvas_particle_1.width;
+
var W = canvas_particle_1.width;
     var h_1 = canvas_particle_1.height;
+
     var H = canvas_particle_1.height;
var w = w_1/3;
 
var h = h_1/3;
 
 
 
 +
var dx = 10;
 +
var w = W/3 - dx;
 +
var h = H/3 - dx;
 
var r = 7;
 
var r = 7;
var N = 10;
+
var N = 15;//количество частиц
rx = new Array(); //Содержит координаты частиц по оси Х
+
 
ry = new Array(); //Содержит координаты частиц по оси У
+
var a0 = w*0.1; //равновесное расстояние
rxI0 = new Array();rxI1 = new Array();rxI2 = new Array();rxI3 = new Array();rxI4 = new Array();rxI5 = new Array();rxI6 = new Array();rxI7 = new Array();
+
var D = 100;//удельная энергия коэффициент в формуле силы
ryI0 = new Array();ryI1= new Array();ryI2= new Array();ryI3= new Array();ryI4= new Array();ryI5= new Array();ryI6= new Array();ryI7= new Array();
+
rx = new Array();//Содержит координаты частиц по оси Х
vx = new Array(); //Скорость по Х
+
ry = new Array();//Содержит координаты частиц по оси У
vy = new Array(); //Скорость по У
+
vx = new Array();//Скорость по Х
vx_p = new Array();vx_m = new Array();vy_p = new Array();vy_m = new Array();
+
vy = new Array();//Скорость по У
var distR0,distR2,distR3,distR;
 
 
 
L = new Array();
 
L = new Array();
var D = 5;
+
num_canv = new Array();
var a0 = w * 0.1;  
+
var mod_f = 0;//модуль силы
var c = 72 * D/r;
+
var f = 0;
var W = Math.sqrt(c);
+
var rass = 0;//расстояние между частицами
var T = 2 * Math.PI/W;
+
var fx_i= 0;//сила по х
dt = 0.03;
+
var fy_i = 0;//сида по у
//0.04380741654852822
+
var dt = 0.0025;//шаг интегрирования
+
v = new Array(0,0,0);
for (i = 0; i < N/2; ++i)
+
//==========Заготовки для создания начальных конфигураций======
 +
for (j = 0;j<N;j++)//начальные скорости
 
{
 
{
vx_p[i] = Math.random()*15;
+
vx[j] = Math.random()*10;//Math.random();
vy_p[i] = Math.random()*15;
+
vy[j] = Math.random()*10;//Math.random() ;
vx_m[i] = -vx_p[i];
 
vy_m[i] = -vy_p[i];
 
vx = vx_p.concat(vx_m);
 
vy = vy_p.concat(vy_m);
 
 
}
 
}
+
var kol = 0;
var kol = 1;
 
 
var prx = 0;
 
var prx = 0;
 
var pry = 0;
 
var pry = 0;
 
var dist = 0;
 
var dist = 0;
 
var f;
 
var f;
rx[0] = Math.random() * (w - 10);  
+
rx[0] = Math.random() * w; //w*(0.5+(j-2)*0.15);
ry[0] = Math.random() * (h - 10);
+
ry[0] = Math.random() * h;//h/2;
while (kol < N)
+
kol = 1;
 +
while (kol<N)
 
{
 
{
f = 0;
+
f =0;
prx = Math.random() * (w - 10);  
+
prx = Math.random() * w; //w*(0.5+(j-2)*0.15);
pry = Math.random() * (h - 10);
+
pry = Math.random() * h;//h/2;
for (i = 0; i < kol; i++)
+
for (i = 0; i < kol;i++)
 
{
 
{
dist = Math.pow((rx[i] - prx),2)+Math.pow((ry[i] - pry),2);
+
dist = Math.pow((rx[i]-prx),2)+Math.pow((ry[i]-pry),2);
if (dist < Math.pow(2 * a0,2))
+
if (dist<Math.pow(2*a0,2))
 
{
 
{
 
f = f+1;
 
f = f+1;
Строка 513: Строка 445:
 
if (f==0)
 
if (f==0)
 
{
 
{
rx[kol] = prx;
+
rx[kol] = prx; //w*(0.5+(j-2)*0.15);
ry[kol] = pry;
+
ry[kol] = pry;//h/2;
 
kol++;
 
kol++;
 
}
 
}
 
}
 
}
var steps = 0;
 
 
 
 +
//================================================
 
 
 +
var steps = 0;
 +
 
function step()
 
function step()
 
{
 
{
Строка 528: Строка 462:
 
var vGraph = new TM_graph(                  // определить график
 
var vGraph = new TM_graph(                  // определить график
 
"#vGraph",                              // на html-элементе #vGraph
 
"#vGraph",                              // на html-элементе #vGraph
1000,                                    // сколько шагов по оси "x" отображается
+
500,                                    // сколько шагов по оси "x" отображается
-1, 1,0.2);                           // мин. значение оси Y, макс. значение оси Y, шаг по оси Y
+
-1,1,0.5);  
+
 
 
function tick()
 
function tick()
 
{
 
{
for (i = 0; i < N ; i++)
+
 +
steps += 1;
 +
for (i = 0; i < N; i++) //расчет сил и скоростей
 +
for (j = 0; j < N; j++)
 +
{
 +
if (i!=j)
 +
{
 +
rass = Math.sqrt(Math.pow((rx[i]-rx[j]),2)+Math.pow((ry[i]-ry[j]),2));
 +
 +
var r2 = r*r;
 +
var b = Math.pow(13/7,1/6)*r;
 +
var b2 = b * b;
 +
var rass2 = rass * rass;
 +
var acut = 2 * r;//14
 +
var acut2 = acut*acut;
 +
if (rass >= 0 && rass <= b) {k = 1;}//0;7.76
 +
if (rass >= acut) {k = 0;}
 +
if (rass >= b && rass <= acut)
 +
{
 +
k = Math.pow((1- Math.pow((rass2 - b2)/(acut2-b2),2)),2);
 +
}
 +
 
 +
mod_f = 5000/r2*k*((Math.pow(r/rass),8)-Math.pow((r/rass),14));
 +
if (mod_f < 0){mod_f = 4;}
 +
 +
fx_i = mod_f*(rx[i]-rx[j]);
 +
fy_i = mod_f*(ry[i]-ry[j]);
 +
vx[i]+=fx_i*dt;
 +
vx[j]-=fx_i*dt;
 +
vy[i]+=fy_i*dt;
 +
vy[j]-=fy_i*dt;
 +
}
 +
}
 +
 +
for (i = 0; i < N; i++) //пересчет положений
 
{
 
{
 
steps += 1;
 
 
 
rx[i] += vx[i]*dt;
 
rx[i] += vx[i]*dt;
 
ry[i] += vy[i]*dt;
 
ry[i] += vy[i]*dt;
 
 
if (rx[i] >= w) {rx[i] = rx[i] - w;}
 
if (rx[i] >= w) {rx[i] = rx[i] - w;}
if (rx[i] <= 0) {rx[i] = rx[i] + w;}
+
if (rx[i] <= 0) {rx[i] = rx[i] + w;}
if (ry[i] >= h) {ry[i] = ry[i] - h;}
+
if (ry[i] >= h) {ry[i] = ry[i] - h;}
if (ry[i] <= 0) {ry[i] = ry[i] + h;}
+
if (ry[i] <= 0) {ry[i] = ry[i] + h;}
 
 
rxI0[i] = rx[i] + w;
+
ryI0[i] = ry[i];
+
var sumL = 0;
 
+
L[i] = (rx[i] * vy[i] - ry[i] * vx[i])/1100;
rxI3[i] = rx[i] + w;
+
sumL += L[i];
ryI3[i] = ry[i] + h;
+
if (steps % 100 == 0) vGraph.graphIter(steps, sumL); // подать данные на график
+
//console.log(sumL);
rxI6[i] = rx[i] + w;
+
}
ryI6[i] = ry[i] + 2*h;
+
}
 
 
rxI1[i] = rx[i] + 2*w;
 
ryI1[i] = ry[i];
 
 
rxI4[i] = rx[i] + 2*w;
 
ryI4[i] = ry[i] + h;
 
 
rxI7[i] = rx[i] + 2*w;
 
ryI7[i] = ry[i] + 2*h;
 
 
rxI2[i] = rx[i];
 
ryI2[i] = ry[i] + h;
 
 
rxI5[i] = rx[i];
 
ryI5[i] = ry[i] + 2*h;
 
 
 
 
//раcсчет расстояний
 
 
for (j = 0; j < N ; j++)
 
{
 
if (i != j)
 
{
 
distR0 = Math.sqrt(Math.pow((rx[i]-rxI0[j]),2)+Math.pow((ry[i]-ryI0[j]),2));
 
distR2 = Math.sqrt(Math.pow((rx[i]-rxI2[j]),2)+Math.pow((ry[i]-ryI2[j]),2));
 
distR3 = Math.sqrt(Math.pow((rx[i]-rxI3[j]),2)+Math.pow((ry[i]-ryI3[j]),2));
 
distR = Math.sqrt(Math.pow((rx[i]-rx[j]),2)+Math.pow((ry[i]-ry[j]),2));
 
 
//раcсчет сил
 
a = 4 * r;
 
if (distR0 < 2*r)
 
{
 
var mod_fR0,fxR0,fyR0;
 
 
mod_fR0 = 12*D*((Math.pow(r/distR0),13)-Math.pow((r/distR0),7))/a;
 
//console.log(mod_fR0);
 
if (mod_fR0 >=0)
 
{
 
fxR0 = mod_fR0*(rx[i]-rxI0[j]);
 
fyR0 = mod_fR0*(ry[i]-ryI0[j]);
 
vx[i]+=fxR0*dt;
 
vx[j]-=fxR0*dt;
 
vy[i]+=fyR0*dt;
 
vy[j]-=fyR0*dt;
 
}
 
}
 
if (distR2 < 2*r)
 
{
 
var mod_fR2,fxR2,fyR2;
 
 
mod_fR2 = 12*D*((Math.pow(r/distR2),13)-Math.pow((r/distR2),7))/a;
 
 
if (mod_fR2 >=0)
 
{
 
fxR2 = mod_fR2*(rx[i]-rxI2[j]);
 
fyR2 = mod_fR2*(ry[i]-ryI2[j]);
 
vx[i]+=fxR2*dt;
 
vx[j]-=fxR2*dt;
 
vy[i]+=fyR2*dt;
 
vy[j]-=fyR2*dt;
 
}
 
}
 
if (distR3 < 2*r)
 
{
 
var mod_fR3,fxR3,fyR3;
 
 
mod_fR3 = 12*D*((Math.pow(r/distR3),13)-Math.pow((r/distR3),7))/a;
 
 
if (mod_fR3 >=0)
 
{
 
fxR3 = mod_fR3*(rx[i]-rxI3[j]);
 
fyR3 = mod_fR3*(ry[i]-ryI3[j]);
 
vx[i]+=fxR3*dt;
 
vx[j]-=fxR3*dt;
 
vy[i]+=fyR3*dt;
 
vy[j]-=fyR3*dt;
 
}
 
}
 
 
if (distR < 2*r)
 
{
 
var mod_fR,fxR,fyR;
 
mod_fR = 12*D*((Math.pow(r/distR),13)-Math.pow((r/distR),7))/a;
 
if (mod_fR >=0)
 
{
 
fxR = mod_fR*(rx[i]-rx[j]);
 
fyR = mod_fR*(ry[i]-ry[j]);
 
vx[i]+=fxR*dt;
 
vx[j]-=fxR*dt;
 
vy[i]+=fyR*dt;
 
vy[j]-=fyR*dt;
 
}
 
}
 
 
Array.prototype.sum = function()
 
{
 
for (var i=0, sum=0; i < this.length; sum += this[i++]);
 
return sum;
 
}
 
 
 
+
function draw()  
L[i] = (rx[i] * vy[i] - ry[i] * vx[i])/5000;
+
var sumL = L.sum();
 
//график
 
if (steps % 50 == 0) vGraph.graphIter(steps, sumL); // подать данные на график
 
//console.log(sumL);
 
  
 +
 +
ctx.clearRect(0, 0, W , H );    // очистить экран
 +
ctx.beginPath();
 +
for (var i1 = 1; i1<3;i1++)
 +
for (var i2 = 1;i2<3;i2++)
 +
              {
 +
  var px = i1 *(h+dx);
 +
  var py = i2 *(w+dx);
 +
  ctx.moveTo(px, 0);
 +
                ctx.lineTo(px, H);
 +
ctx.moveTo(0, py);
 +
                ctx.lineTo(W,py);
 +
                ctx.strokeStyle = "#000000"; // цвет линии
 +
                ctx.stroke();
 +
}
 +
for (var i = 0; i < rx.length; i++)
 +
for (var ii = 0; ii<3;ii++)
 +
for (var jj = 0; jj<3; jj++)
 +
for (var i = 0; i < N; i++)
 +
{
 +
var xS_Real0 = rx[i] + ii*(h + dx);         
 +
var yS_Real0 = ry[i]+ jj*(w + dx);
 +
ctx.beginPath();
 +
ctx.fillStyle = "#00008B";
 +
ctx.arc(xS_Real0, yS_Real0, r , 0, 2 * Math.PI, false);
 +
ctx.closePath();
 +
ctx.fill();
 
}
 
}
+
}
 
}
 
 
}
 
}
 
 
 
function draw()
 
{
 
ctx.clearRect(0, 0, w_1 , h_1);    // очистить экран
 
for (var i = 0; i < N; i++)
 
 
{
 
var x = rx[i];         
 
var y = ry[i];
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(x, y, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
 
var xI0 = rxI0[i];         
 
var yI0 = ryI0[i];
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI0, yI0, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
var xI1 = rxI1[i];         
 
var yI1 = ryI1[i];
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI1, yI1, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
var xI2 = rxI2[i];         
 
var yI2 = ryI2[i];
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI2, yI2, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
var xI3 = rxI3[i];         
 
var yI3 = ryI3[i];
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI3, yI3, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
var xI4 = rxI4[i];         
 
var yI4 = ryI4[i];
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI4, yI4, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
var xI5 = rxI5[i];         
 
var yI5 = ryI5[i];
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI5, yI5, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
var xI6 = rxI6[i];         
 
var yI6 = ryI6[i];
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI6, yI6, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
var xI7 = rxI7[i];         
 
var yI7 = ryI7[i];
 
ctx.beginPath();
 
ctx.fillStyle = "#00008B";
 
ctx.arc(xI7, yI7, r , 0, 2 * Math.PI, false);
 
ctx.closePath();
 
ctx.fill();
 
 
}
 
ctx.beginPath();                            // начать рисование
 
ctx.fillStyle="#000000";
 
ctx.moveTo(w, 0);                          // переместить "карандаш" в точку
 
ctx.lineTo(w, h_1);                          // нарисовать "карандашом" линию до точки
 
ctx.stroke();
 
 
ctx.beginPath();
 
ctx.fillStyle="#000000";
 
ctx.moveTo(2 * w, 0);                           
 
ctx.lineTo(2 * w, h_1);                           
 
ctx.stroke();
 
 
ctx.beginPath(); 
 
ctx.fillStyle="#000000";
 
ctx.moveTo(0, h);                           
 
ctx.lineTo(w_1, h);                           
 
ctx.stroke();
 
 
ctx.beginPath();
 
ctx.fillStyle="#000000";
 
ctx.moveTo(0, 2 * h);                           
 
ctx.lineTo(w_1, 2 * h);                           
 
ctx.stroke();
 
}
 
 
   
 
   
setInterval(step, 1000/120);              // функция step будет запускаться 60 раз в секунду (60 раз / 1000 мс)
+
setInterval(step, 1000/20);              // функция step будет запускаться 60 раз в секунду (60 раз / 1000 мс)
 
 
}
+
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</div>
 
</div>
 
+
</div>=='''Ссылки'''==
==Ссылки==
 
 
* [[Виртуальная лаборатория]]
 
* [[Виртуальная лаборатория]]
 
<br/>
 
<br/>
Вам запрещено изменять защиту статьи. 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:

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