Редактирование: Particles chain with V-model interaction

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

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
[[ru:Цепочка частиц с V-model взаимодействием]]
 
 
[[The virtual laboratory]] > [[Particles chain with V-model interaction]] <HR>
 
[[The virtual laboratory]] > [[Particles chain with V-model interaction]] <HR>
  
Строка 7: Строка 6:
  
 
The model is described by the following formulas:
 
The model is described by the following formulas:
[[File:Fig2_single_bond.png|350px|thumb|right| Interaction of two particles]]  
+
[[Файл:Fig2_single_bond.png|350px|thumb|right| Interaction of two particles]]  
 
Interaction force:
 
Interaction force:
  
Строка 25: Строка 24:
 
== Description of realization of a chain ==  
 
== Description of realization of a chain ==  
  
[[File: Fig3_bond_def.png|600px|thumb|right|Types of deformations]]
+
[[Файл: Fig3_bond_def.png|600px|thumb|right|Types of deformations]]
  
 
In the program three various boundary conditions which can are realized chosen as the user:
 
In the program three various boundary conditions which can are realized chosen as the user:
Строка 67: Строка 66:
  
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
File '''"V-model.js"'''
+
Файл '''"V-model.js"'''
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
function MainParticle(canvas) {
 
function MainParticle(canvas) {
     // Presets
+
     // Предварительные установки
     var context    = canvas.getContext("2d");  // on context drawing takes place
+
     var context    = canvas.getContext("2d");  // на context происходит рисование
 
 
   //  Specifying constants
+
   //  Задание констант
     const Pi = 3.1415926;                  // "Pi"
+
     const Pi = 3.1415926;                  // число "пи"
     const m0 = 1;                          // weight scale
+
     const m0 = 1;                          // масштаб массы
     const T0 = 1;                          // time scale (the period of oscillation of the original system )
+
     const T0 = 1;                          // масштаб времени (период колебаний исходной системы)
     const a0 = 1;                          // distance scale ( ball diameter)
+
     const a0 = 1;                          // масштаб расстояния (диаметр шара)
     const g0 = a0 / T0 / T0;                // accelerating the scale (acceleration , in which for T0 be completed distance a0)
+
     const g0 = a0 / T0 / T0;                // масштаб ускорения (ускорение, при котором за T0 будет пройдено расстояние a0)
     const k0 = 2 * Pi / T0;                // frequency scale
+
     const k0 = 2 * Pi / T0;                // масштаб частоты
     //const C0 = m0 * k0 * k0;                // hardness scale
+
     //const C0 = m0 * k0 * k0;                // масштаб жесткости
 
     const C0 = 1;
 
     const C0 = 1;
     const B0 = 2 * m0 * k0;                // viscosity scale
+
     const B0 = 2 * m0 * k0;                // масштаб вязкости
  
     // *** Setting physical parameters ***
+
     // *** Задание физических параметров ***
  
     const Ny = 5;                          // the number of balls is placed vertically in a window ( sets the size of the ball relative to the window size )
+
     const Ny = 5;                          // число шаров, помещающихся по вертикали в окно (задает размер шара относительно размера окна)
 
     const Nx = 5;
 
     const Nx = 5;
const m = 1 * m0;                      // weight
+
const m = 1 * m0;                      // масса
     const Cwall = 10 * C0;                  // wall stiffness
+
     const Cwall = 10 * C0;                  // жесткость стен
     //const B = 0.01 * B0;  // viscosity of the environment
+
     //const B = 0.01 * B0;  // вязкость среды
 
     const B = 0;
 
     const B = 0;
     const B1 = 0.03 * B0;                  // viscosity on the walls
+
     const B1 = 0.03 * B0;                  // вязкость на стенках
 
     //const B1 = 0;
 
     //const B1 = 0;
     //var mg = 0.25 * m * g0;              // gravity
+
     //var mg = 0.25 * m * g0;              // сила тяжести
     const r = 0.5 * a0;                    // the radius of the particles in the calculated coordinates
+
     const r = 0.5 * a0;                    // радиус частицы в расчетных координатах
var stiff = 1 * C0;                    // "Rigidity" of a spring
+
var stiff = 1 * C0;                    // "жесткость" пружинки
  
 
var vx0 = 0 * a0/T0;
 
var vx0 = 0 * a0/T0;
Строка 102: Строка 101:
 
     //Text_vx0.value  = vx0;
 
     //Text_vx0.value  = vx0;
 
 
     // *** System settings ***
+
     // *** Параметры системы ***
var c = 1;// rigidity
+
var c = 1;// жесткость
var n = 10;// the amount of particles
+
var n = 10;// количество частиц
 
var c_a = 100//1;//longitudinal
 
var c_a = 100//1;//longitudinal
 
var c_d = 100//c_a*1;//shear
 
var c_d = 100//c_a*1;//shear
Строка 111: Строка 110:
 
var J = 1;
 
var J = 1;
 
var m_0 = 1.5;
 
var m_0 = 1.5;
var f = 0 ;//option or free body or fixed edge
+
var f = 0 ;//вариант либо свободное тело, либо закрепелнный край
 
var ugol = 0;
 
var ugol = 0;
 
var sm_x = 0;
 
var sm_x = 0;
Строка 117: Строка 116:
 
 
 
 
     // *** Setting the parameters of computing ***
+
     // *** Задание вычислительных параметров ***
  
     const fps = 50;                        // frames per second - the number of frames per second ( kachectvo display )50
+
     const fps = 50;                        // frames per second - число кадров в секунду (качеcтво отображения)50
     const spf = 10;//5;                        // steps per frame  - the number of integration steps between frames ( calculation speed)
+
     const spf = 10;//5;                        // steps per frame  - число шагов интегрирования между кадрами (скорость расчета)
     const dt  = 1 * T0 / fps;          // the integration step
+
     const dt  = 1 * T0 / fps;          // шаг интегрирования
 
 
// Setting constants for drawing
+
// Задание констант для рисования
const scale    =100* canvas.height / Ny / a0;  // a scaling factor for the transition from design to screen coordinates
+
const scale    =100* canvas.height / Ny / a0;  // масштабный коэффициент для перехода от расчетных к экранным координатам
 
 
     var w = canvas.width / scale;          // width of the window in the calculated coordinates
+
     var w = canvas.width / scale;          // ширина окна в расчетных координатах
     var h = canvas.height / scale;          // window height in calculated coordinates
+
     var h = canvas.height / scale;          // высота окна в расчетных координатах
 
var k1v; var k2v; var k3v; var k4v; var k1x;  var k2x; var k3x; var k4x;  
 
var k1v; var k2v; var k3v; var k4v; var k1x;  var k2x; var k3x; var k4x;  
 
var T1;var T2; var T1_; var T2_;
 
var T1;var T2; var T1_; var T2_;
Строка 139: Строка 138:
 
var B_3 = c_b - B_2/4 - B_4/2;
 
var B_3 = c_b - B_2/4 - B_4/2;
 
 
     // -------------------------------        Implementation of the program             ------------------------------------------
+
     // -------------------------------        Выполнение программы             ------------------------------------------
// Addition of a sphere
+
// Добавление шара
balls=[]//the massif containing particles
+
balls=[]//массив содержащий частицы
 
j=1;
 
j=1;
 
for (i = 0;i<n/2;i++)
 
for (i = 0;i<n/2;i++)
Строка 148: Строка 147:
 
var b1 = [];
 
var b1 = [];
 
var time = 1;
 
var time = 1;
b.fi_x = 0*j; //corner with an axis OX
+
b.fi_x = 0*j; //угол с осью ОХ
b.omega=0;// angular velocity
+
b.omega=0;//угловая скорость
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//shift for drawing.  
+
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//смещение для рисования.  
 
j=j*(-1);
 
j=j*(-1);
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;    // calculated coordinates of a sphere
+
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;    // расчетные координаты шара
 
b.Fx=0;b.Fy=0;
 
b.Fx=0;b.Fy=0;
 
b.x_ = b.x;              b.y_  = b.y;  
 
b.x_ = b.x;              b.y_  = b.y;  
b.fx = 0;                b.fy  = 0;      // force operating on a spher
+
b.fx = 0;                b.fy  = 0;      // сила, действующая на шар
b.vx = vx0;              b.vy  = vy0;      // initial velocity
+
b.vx = vx0;              b.vy  = vy0;      // начальная скорость
b1.fi_x = 0*j; //corner with an axis OX
+
b1.fi_x = 0*j; //угол с осью ОХ
 
b1.omega=0;
 
b1.omega=0;
 
b1.Fx=0;b1.Fy=0;
 
b1.Fx=0;b1.Fy=0;
b1.x = (w / 2)+diag*(2*i+1)*1.0;          b1.y = h / 2 ;    // calculated coordinates of a sphere
+
b1.x = (w / 2)+diag*(2*i+1)*1.0;          b1.y = h / 2 ;    // расчетные координаты шара
 
b1.x_ = b.x;              b1.y_  = b.y;  
 
b1.x_ = b.x;              b1.y_  = b.y;  
b1.fx = 0;                b1.fy  = 0;      // force operating on a sphere
+
b1.fx = 0;                b1.fy  = 0;      // сила, действующая на шар
b1.vx = vx0;              b1.vy  = vy0;      // initial velocity
+
b1.vx = vx0;              b1.vy  = vy0;      // начальная скорость
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2+(i)] = b1;//[2*i+1]
 
balls[n/2+(i)] = b1;//[2*i+1]
 
 
 
}
 
}
// Basis cycle of the program
+
// Основной цикл программы
setInterval(control, 1500 / fps);  // function control is caused with the period determined by the second parameter
+
setInterval(control, 1500 / fps);  // функция control вызывается с периодом, определяемым вторым параметром
 
 
 
// ---------------------------------------------------------------------------------------------------------------------
 
// ---------------------------------------------------------------------------------------------------------------------
// ---------------------------------          Definition of all functions             -----------------------------------
+
// ---------------------------------          Определение всех функций             -----------------------------------
 
// ---------------------------------------------------------------------------------------------------------------------
 
// ---------------------------------------------------------------------------------------------------------------------
 
 
// the trial function caused in the program
+
// основная функция, вызываемая в программе
 
function control()  
 
function control()  
 
{
 
{
         physics(); // we do spf of steps an integration
+
         physics(); // делаем spf шагов интегрирование
         draw();    // we draw a particle
+
         draw();    // рисуем частицу
 
}
 
}
//=======================new task of a reference state
+
//=======================новое задание начального состояния
function rebild()//new task of a reference state
+
function rebild()//новое задание начального состояния
 
{
 
{
 
time = 1;
 
time = 1;
Строка 195: Строка 194:
 
var b1 = [];
 
var b1 = [];
 
var time = 1;
 
var time = 1;
b.fi_x = 0*j; //corner with an axis ОХ
+
b.fi_x = 0*j; //угол с осью ОХ
b.omega=0;//angular velocity
+
b.omega=0;//угловая скорость
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//shift for drawing.  
+
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//смещение для рисования.  
 
j=j*(-1);
 
j=j*(-1);
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;    // calculated coordinates of a sphere
+
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;    // расчетные координаты шара
 
b.Fx=0;b.Fy=0;
 
b.Fx=0;b.Fy=0;
 
b.x_ = b.x;              b.y_  = b.y;  
 
b.x_ = b.x;              b.y_  = b.y;  
b.fx = 0;                b.fy  = 0;      // force operating on a sphere
+
b.fx = 0;                b.fy  = 0;      // сила, действующая на шар
b.vx = vx0;              b.vy  = vy0;      // initial velocity
+
b.vx = vx0;              b.vy  = vy0;      // начальная скорость
b1.fi_x = 0*j; //corner with an axis ОХ
+
b1.fi_x = 0*j; //угол с осью ОХ
 
b1.omega=0;
 
b1.omega=0;
 
b1.Fx=0;b1.Fy=0;
 
b1.Fx=0;b1.Fy=0;
b1.x = (w / 2)+diag*(2*i+1)*1.0;          b1.y = h / 2 ;    // calculated coordinates of a sphere
+
b1.x = (w / 2)+diag*(2*i+1)*1.0;          b1.y = h / 2 ;    // расчетные координаты шара
 
b1.x_ = b.x;              b1.y_  = b.y;  
 
b1.x_ = b.x;              b1.y_  = b.y;  
b1.fx = 0;                b1.fy  = 0;      // force operating on a sphere
+
b1.fx = 0;                b1.fy  = 0;      // сила, действующая на шар
b1.vx = vx0;              b1.vy  = vy0;      // initial velocity
+
b1.vx = vx0;              b1.vy  = vy0;      // начальная скорость
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2+(i)] = b1;//[2*i+1]
 
balls[n/2+(i)] = b1;//[2*i+1]
Строка 217: Строка 216:
 
context.clearRect(0, 0, w * scale, h * scale);  
 
context.clearRect(0, 0, w * scale, h * scale);  
 
}
 
}
//=======================The choice like task======================
+
//=======================Выбор типа задачи======================
 
 
radio_pic_1.onchange = function() {f = 0;rebild();};//the free body
+
radio_pic_1.onchange = function() {f = 0;rebild();};//свободное тело
radio_pic_2.onchange = function() {f = 1;rebild();};//the fixed edge
+
radio_pic_2.onchange = function() {f = 1;rebild();};//закрепленный край
radio_pic_3.onchange = function() {f = 2;rebild();};//the fixed edges
+
radio_pic_3.onchange = function() {f = 2;rebild();};//закрепелнные края
 
 
// Reaction to change of value in a checkbox
+
// Реакция на изменение значения в чекбоксе
 
 
 
this.new_start = function()  
 
this.new_start = function()  
Строка 239: Строка 238:
 
var b1 = [];
 
var b1 = [];
 
var time = 1;
 
var time = 1;
b.fi_x = ugol*j; //corner with an axis ОХ
+
b.fi_x = ugol*j; //угол с осью ОХ
b.omega=0;//angular velocity
+
b.omega=0;//угловая скорость
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//shift for drawing.  
+
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//смещение для рисования.  
 
j=j*(-1);
 
j=j*(-1);
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // calculated coordinates of a sphere
+
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // расчетные координаты шара
 
b.Fx=0;b.Fy=0;
 
b.Fx=0;b.Fy=0;
 
b.x_ = b.x;              b.y_  = b.y;  
 
b.x_ = b.x;              b.y_  = b.y;  
b.fx = 0;                b.fy  = 0;      // force operating on a sphere
+
b.fx = 0;                b.fy  = 0;      // сила, действующая на шар
b.vx = vx0;              b.vy  = vy0;      // initial velocity
+
b.vx = vx0;              b.vy  = vy0;      // начальная скорость
b1.fi_x = ugol*j; //corner with an axis ОХ
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.omega=0;
 
b1.omega=0;
 
b1.Fx=0;b1.Fy=0;
 
b1.Fx=0;b1.Fy=0;
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h /  (2.00-sm_y/100) ;    // force operating on a sphere
+
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h /  (2.00-sm_y/100) ;    // расчетные координаты шара
 
b1.x_ = b.x;              b1.y_  = b.y;  
 
b1.x_ = b.x;              b1.y_  = b.y;  
b1.fx = 0;                b1.fy  = 0;      // force operating on a sphere
+
b1.fx = 0;                b1.fy  = 0;      // сила, действующая на шар
b1.vx = vx0;              b1.vy  = vy0;      // initial velocity
+
b1.vx = vx0;              b1.vy  = vy0;      // начальная скорость
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2+(i)] = b1;//[2*i+1]
 
balls[n/2+(i)] = b1;//[2*i+1]
Строка 272: Строка 271:
 
var time = 1;
 
var time = 1;
 
 
b.fi_x = ugol*j; //corner with an axis ОХ
+
b.fi_x = ugol*j; //угол с осью ОХ
b.omega=0;//angular velocity
+
b.omega=0;//угловая скорость
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//shift for drawing.  
+
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//смещение для рисования.  
 
j=j*(-1);
 
j=j*(-1);
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // calculated coordinates of a sphere
+
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // расчетные координаты шара
 
b.Fx=0;b.Fy=0;
 
b.Fx=0;b.Fy=0;
 
b.x_ = b.x;              b.y_  = b.y;  
 
b.x_ = b.x;              b.y_  = b.y;  
b.fx = 0;                b.fy  = 0;      // force operating on a sphere
+
b.fx = 0;                b.fy  = 0;      // сила, действующая на шар
b.vx = vx0;              b.vy  = vy0;      // initial velocity
+
b.vx = vx0;              b.vy  = vy0;      // начальная скорость
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.omega=0;
 
b1.omega=0;
 
b1.Fx=0;b1.Fy=0;
 
b1.Fx=0;b1.Fy=0;
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h /  (2.00-sm_y/100) ;    // calculated coordinates of a sphere
+
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h /  (2.00-sm_y/100) ;    // расчетные координаты шара
 
b1.x_ = b.x;              b1.y_  = b.y;  
 
b1.x_ = b.x;              b1.y_  = b.y;  
b1.fx = 0;                b1.fy  = 0;      // force operating on a sphere
+
b1.fx = 0;                b1.fy  = 0;      // сила, действующая на шар
b1.vx = vx0;              b1.vy  = vy0;      // initial velocity
+
b1.vx = vx0;              b1.vy  = vy0;      // начальная скорость
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2+(i)] = b1;//[2*i+1]
 
balls[n/2+(i)] = b1;//[2*i+1]
Строка 304: Строка 303:
 
var time = 1;
 
var time = 1;
 
 
b.fi_x = 10*j; //corner with an axis OX
+
b.fi_x = 10*j; //угол с осью ОХ
b.omega=0;//angular velocity
+
b.omega=0;//угловая скорость
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//shift for drawing.  
+
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//смещение для рисования.  
 
j=j*(-1);
 
j=j*(-1);
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.00;    // calculated coordinates of a sphere
+
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.00;    // расчетные координаты шара
 +
 
b.Fx=0;b.Fy=0;
 
b.Fx=0;b.Fy=0;
 
b.x_ = b.x;              b.y_  = b.y;  
 
b.x_ = b.x;              b.y_  = b.y;  
b.fx = 0;                b.fy  = 0;      // force operating on a sphere
+
b.fx = 0;                b.fy  = 0;      // сила, действующая на шар
b.vx = vx0;              b.vy  = vy0;      // initial velocity
+
b.vx = vx0;              b.vy  = vy0;      // начальная скорость
b1.fi_x = 10*j; //corner with an axis OX
+
b1.fi_x = 10*j; //угол с осью ОХ
 
b1.omega=0;
 
b1.omega=0;
 
b1.Fx=0;b1.Fy=0;
 
b1.Fx=0;b1.Fy=0;
b1.x = (w / 2)+diag*(2*i+1)*1.0;          b1.y = h / 2 ;    // calculated coordinates of a sphere
+
b1.x = (w / 2)+diag*(2*i+1)*1.0;          b1.y = h / 2 ;    // расчетные координаты шара
 
b1.x_ = b.x;              b1.y_  = b.y;  
 
b1.x_ = b.x;              b1.y_  = b.y;  
b1.fx = 0;                b1.fy  = 0;      // force operating on a sphere
+
b1.fx = 0;                b1.fy  = 0;      // сила, действующая на шар
b1.vx = vx0;              b1.vy  = vy0;      // initial velocity
+
b1.vx = vx0;              b1.vy  = vy0;      // начальная скорость
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2+(i)] = b1;//[2*i+1]
 
balls[n/2+(i)] = b1;//[2*i+1]
Строка 336: Строка 336:
 
var time = 1;
 
var time = 1;
 
 
b.fi_x = ugol*j; //corner with an axis OX
+
b.fi_x = ugol*j; //угол с осью ОХ
b.omega=0;//angular velocity
+
b.omega=0;//угловая скорость
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//shift for drawing.  
+
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//смещение для рисования.  
 
j=j*(-1);
 
j=j*(-1);
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // calculated coordinates of a sphere
+
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // расчетные координаты шара
 
 
 
b.Fx=0;b.Fy=0;
 
b.Fx=0;b.Fy=0;
 
b.x_ = b.x;              b.y_  = b.y;  
 
b.x_ = b.x;              b.y_  = b.y;  
b.fx = 0;                b.fy  = 0;      // force operating on a sphere
+
b.fx = 0;                b.fy  = 0;      // сила, действующая на шар
b.vx = vx0;              b.vy  = vy0;      // initial velocity
+
b.vx = vx0;              b.vy  = vy0;      // начальная скорость
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.omega=0;
 
b1.omega=0;
 
b1.Fx=0;b1.Fy=0;
 
b1.Fx=0;b1.Fy=0;
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h /  (2.00-sm_y/100) ;    // calculated coordinates of a sphere
+
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h /  (2.00-sm_y/100) ;    // расчетные координаты шара
 
b1.x_ = b.x;              b1.y_  = b.y;  
 
b1.x_ = b.x;              b1.y_  = b.y;  
b1.fx = 0;                b1.fy  = 0;      // force operating on a sphere
+
b1.fx = 0;                b1.fy  = 0;      // сила, действующая на шар
b1.vx = vx0;              b1.vy  = vy0;      // initial velocity
+
b1.vx = vx0;              b1.vy  = vy0;      // начальная скорость
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2+(i)] = b1;//[2*i+1]
 
balls[n/2+(i)] = b1;//[2*i+1]
Строка 373: Строка 373:
 
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);
 
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);
 
j=j*(-1);
 
j=j*(-1);
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
break;
 
break;
 
case 1:
 
case 1:
if (i ==((n/2)-1))//fixing of edge
+
if (i ==((n/2)-1))//закрепление края
 
{
 
{
 
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;
 
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;
 
b.fi_x = 0;
 
b.fi_x = 0;
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
}
 
}
Строка 387: Строка 387:
 
{
 
{
 
b.fi_x = ugol*j;
 
b.fi_x = ugol*j;
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // calculated coordinates of a sphere
+
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // расчетные координаты шара
 
j=j*(-1);
 
j=j*(-1);
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
}
 
}
 
break;
 
break;
 
case 2:
 
case 2:
if (i ==((n/2)-1))//fixing of edges
+
if (i ==((n/2)-1))//закрепление краев
 
{
 
{
 
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;
 
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;
Строка 404: Строка 404:
 
{
 
{
 
b.fi_x = ugol*j;
 
b.fi_x = ugol*j;
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // calculated coordinates of a sphere
+
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // расчетные координаты шара
 
j=j*(-1);
 
j=j*(-1);
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
}
 
}
 
break;
 
break;
 
}
 
}
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//shift for drawing.  
+
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//смещение для рисования.  
 
b.omega=0;
 
b.omega=0;
 
b.Fx=0;b.Fy=0;
 
b.Fx=0;b.Fy=0;
 
b.x_ = b.x;              b.y_  = b.y;  
 
b.x_ = b.x;              b.y_  = b.y;  
b.fx = 0;                b.fy  = 0;      // force operating on a sphere
+
b.fx = 0;                b.fy  = 0;      // сила, действующая на шар
b.vx = vx0;              b.vy  = vy0;      // initial velocity
+
b.vx = vx0;              b.vy  = vy0;      // начальная скорость
 
b1.omega=0;
 
b1.omega=0;
 
b1.Fx=0;b1.Fy=0;
 
b1.Fx=0;b1.Fy=0;
 
b1.x_ = b.x;              b1.y_  = b.y;  
 
b1.x_ = b.x;              b1.y_  = b.y;  
b1.fx = 0;                b1.fy  = 0;      // force operating on a sphere
+
b1.fx = 0;                b1.fy  = 0;      // сила, действующая на шар
b1.vx = vx0;              b1.vy  = vy0;      // initial velocity
+
b1.vx = vx0;              b1.vy  = vy0;      // начальная скорость
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2+(i)] = b1;//[2*i+1]
 
balls[n/2+(i)] = b1;//[2*i+1]
Строка 444: Строка 444:
 
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);
 
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);
 
j=j*(-1);
 
j=j*(-1);
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
break;
 
break;
 
case 1:
 
case 1:
if (i ==((n/2)-1))//fixing of edge
+
if (i ==((n/2)-1))//закрепление края
 
{
 
{
 
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;
 
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;
 
b.fi_x = 0;
 
b.fi_x = 0;
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
}
 
}
Строка 458: Строка 458:
 
{
 
{
 
b.fi_x = ugol*j;
 
b.fi_x = ugol*j;
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // calculated coordinates of a sphere
+
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // расчетные координаты шара
 
j=j*(-1);
 
j=j*(-1);
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
}
 
}
 
break;
 
break;
 
case 2:
 
case 2:
if (i ==((n/2)-1))//fixing of edges
+
if (i ==((n/2)-1))//закрепление краев
 
{
 
{
 
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;
 
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;
Строка 475: Строка 475:
 
{
 
{
 
b.fi_x = ugol*j;
 
b.fi_x = ugol*j;
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // calculated coordinates of a sphere
+
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // расчетные координаты шара
 
j=j*(-1);
 
j=j*(-1);
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
}
 
}
 
break;
 
break;
 
}
 
}
b.omega=0;//angular velocity
+
b.omega=0;//угловая скорость
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//shift for drawing.  
+
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//смещение для рисования.  
 
b.Fx=0;b.Fy=0;
 
b.Fx=0;b.Fy=0;
 
b.x_ = b.x;              b.y_  = b.y;  
 
b.x_ = b.x;              b.y_  = b.y;  
b.fx = 0;                b.fy  = 0;      // force operating on a sphere
+
b.fx = 0;                b.fy  = 0;      // сила, действующая на шар
b.vx = vx0;              b.vy  = vy0;      // initial velocity
+
b.vx = vx0;              b.vy  = vy0;      // начальная скорость
 
b1.omega=0;
 
b1.omega=0;
 
b1.Fx=0;b1.Fy=0;
 
b1.Fx=0;b1.Fy=0;
 
b1.x_ = b.x;              b1.y_  = b.y;  
 
b1.x_ = b.x;              b1.y_  = b.y;  
b1.fx = 0;                b1.fy  = 0;      // force operating on a sphere
+
b1.fx = 0;                b1.fy  = 0;      // сила, действующая на шар
b1.vx = vx0;              b1.vy  = vy0;      // initial velocity
+
b1.vx = vx0;              b1.vy  = vy0;      // начальная скорость
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2+(i)] = b1;//[2*i+1]
 
balls[n/2+(i)] = b1;//[2*i+1]
Строка 514: Строка 514:
 
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);
 
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);
 
j=j*(-1);
 
j=j*(-1);
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
break;
 
break;
 
case 1:
 
case 1:
if (i ==((n/2)-1))//fixing of edge
+
if (i ==((n/2)-1))//закрепление края
 
{
 
{
 
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;
 
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;
 
b.fi_x = 0;
 
b.fi_x = 0;
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
}
 
}
Строка 528: Строка 528:
 
{
 
{
 
b.fi_x = ugol*j;
 
b.fi_x = ugol*j;
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // calculated coordinates of a sphere
+
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // расчетные координаты шара
 
j=j*(-1);
 
j=j*(-1);
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
}
 
}
 
break;
 
break;
 
case 2:
 
case 2:
if (i ==((n/2)-1))//fixing of edges
+
if (i ==((n/2)-1))//закрепление краев
 
{
 
{
 
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;
 
b.x = (w / 2)-diag*(2*i+1)*1.0;          b.y = h / 2.0;
Строка 545: Строка 545:
 
{
 
{
 
b.fi_x = ugol*j;
 
b.fi_x = ugol*j;
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // calculated coordinates of a sphere
+
b.x = (w / 2)-diag*(2*i+1)*(1.0+sm_x/100);          b.y = h / (2.00+sm_y/100);    // расчетные координаты шара
 
j=j*(-1);
 
j=j*(-1);
b1.fi_x = ugol*j; //corner with an axis OX
+
b1.fi_x = ugol*j; //угол с осью ОХ
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
b1.x = (w / 2)+diag*(2*i+1)*(1.0+sm_x/100);          b1.y = h / (2.00-sm_y/100) ;
 
}
 
}
 
break;
 
break;
 
}
 
}
b.omega=0;//angular velocity
+
b.omega=0;//угловая скорость
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//shift for drawing.  
+
var dx = diag*Math.cos(b.fi_x*Math.PI/180);//смещение для рисования.  
 
b.Fx=0;b.Fy=0;
 
b.Fx=0;b.Fy=0;
 
b.x_ = b.x;              b.y_  = b.y;  
 
b.x_ = b.x;              b.y_  = b.y;  
b.fx = 0;                b.fy  = 0;      // force operating on a sphere
+
b.fx = 0;                b.fy  = 0;      // сила, действующая на шар
b.vx = vx0;              b.vy  = vy0;      // initial velocity
+
b.vx = vx0;              b.vy  = vy0;      // начальная скорость
 
b1.omega=0;
 
b1.omega=0;
 
b1.Fx=0;b1.Fy=0;
 
b1.Fx=0;b1.Fy=0;
 
b1.x_ = b.x;              b1.y_  = b.y;  
 
b1.x_ = b.x;              b1.y_  = b.y;  
b1.fx = 0;                b1.fy  = 0;      // force operating on a sphere
+
b1.fx = 0;                b1.fy  = 0;      // сила, действующая на шар
b1.vx = vx0;              b1.vy  = vy0;      // initial velocity
+
b1.vx = vx0;              b1.vy  = vy0;      // начальная скорость
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2-(i+1)]=b;//[2*i]
 
balls[n/2+(i)] = b1;//[2*i+1]
 
balls[n/2+(i)] = b1;//[2*i+1]
Строка 569: Строка 569:
 
         context.clearRect(0, 0, w * scale, h * scale);       
 
         context.clearRect(0, 0, w * scale, h * scale);       
 
};
 
};
// The function doing spf of integration steps
+
// Функция, делающая spf шагов интегрирования
 
function physics()  
 
function physics()  
{                    // the fact that there is each step of time
+
{                    // то, что происходит каждый шаг времени
    for (var s = 1; s <= spf; s++) //integration step
+
    for (var s = 1; s <= spf; s++) //шаги интегрирования
 
{   
 
{   
 
 
Строка 604: Строка 604:
 
var beta_y=0.01//0.1;
 
var beta_y=0.01//0.1;
 
//console.log(c_b);
 
//console.log(c_b);
if (f==0)//the free body
+
if (f==0)//совбодное тело
 
{
 
{
 
x_v1=balls[i].vx;
 
x_v1=balls[i].vx;
Строка 628: Строка 628:
 
asd=balls[0].fx+balls[1].fx;
 
asd=balls[0].fx+balls[1].fx;
 
}
 
}
else//the fixed edge
+
else//закрепелнный край
 
{
 
{
if (f==1)////the fixed edge
+
if (f==1)////закрепелнный край
 
{
 
{
 
balls[i] = b;
 
balls[i] = b;
Строка 656: Строка 656:
 
}
 
}
 
}
 
}
else //both edges are fixed
+
else //оба края закрепелены
 
{
 
{
 
 
Строка 691: Строка 691:
 
}
 
}
 
}
 
}
// definition of the function calculating force
+
// определение функции, вычисляющей силу
  
     // definition of function, risuyushchiy particle, walls and other
+
     // определение функции, рисующией частицу, стенки и пр
     context.fillStyle = "#3070d0"; // colour
+
     context.fillStyle = "#3070d0"; // цвет
//===================================Interaction by a mouse========================
+
//===================================Взаимодествие мышью========================
// function is started when pressing a key of a mouse
+
// функция запускается при нажатии клавиши мыши
 
     canvasBalls.onmousedown = function(e) {
 
     canvasBalls.onmousedown = function(e) {
         var m = mouseCoords(e);                    // we receive cursor coordinates of a mouse
+
         var m = mouseCoords(e);                    // получаем координаты курсора мыши
 
         switch (f)  
 
         switch (f)  
 
{
 
{
 
case(0):
 
case(0):
var x = balls[n-1].x - m.x/scale;                          // distance from the center of a sphere to the cursor on an axis x
+
var x = balls[n-1].x - m.x/scale;                          // расстояние от центра шара до курсора по оси x
var y = balls[n-1].y - m.y/scale;                          // distance from the center of a sphere to the cursor on an axis y
+
var y = balls[n-1].y - m.y/scale;                          // расстояние от центра шара до курсора по оси y
var rLen2 = x * x + y * y;                  // distance square between the cursor and the center of a sphere
+
var rLen2 = x * x + y * y;                  // квадрат расстояния между курсором и центром шара
if (rLen2 <= diag*diag) {                      // if the cursor pressed a sphere
+
if (rLen2 <= diag*diag) {                      // если курсор нажал на шар
xShift = balls[n-1].x - m.x/scale;                      // shift of the cursor concerning the center of a sphere on x
+
xShift = balls[n-1].x - m.x/scale;                      // сдвиг курсора относительно центра шара по x
yShift = balls[n-1].y - m.y/scale;                      // shift of the cursor concerning the center of a sphere for y
+
yShift = balls[n-1].y - m.y/scale;                      // сдвиг курсора относительно центра шара по y
canvasBalls.onmousemove = mouseMove; // until the key is pressed - movement function works
+
canvasBalls.onmousemove = mouseMove; // пока клавиша нажата - работает функция перемещения
 
}
 
}
 
break;
 
break;
 
case(1):
 
case(1):
var x = balls[n-1].x - m.x/scale;                          // distance from the center of a sphere to the cursor on an axis x
+
var x = balls[n-1].x - m.x/scale;                          // расстояние от центра шара до курсора по оси x
var y = balls[n-1].y - m.y/scale;                          // distance from the center of a sphere to the cursor on an axis y
+
var y = balls[n-1].y - m.y/scale;                          // расстояние от центра шара до курсора по оси y
var rLen2 = x * x + y * y;                  // distance square between the cursor and the center of a sphere
+
var rLen2 = x * x + y * y;                  // квадрат расстояния между курсором и центром шара
if (rLen2 <= diag*diag) {                      // if the cursor pressed a sphere
+
if (rLen2 <= diag*diag) {                      // если курсор нажал на шар
xShift = balls[n-1].x - m.x/scale;                      // shift of the cursor concerning the center of a sphere on x
+
xShift = balls[n-1].x - m.x/scale;                      // сдвиг курсора относительно центра шара по x
yShift = balls[n-1].y - m.y/scale;                      // shift of the cursor concerning the center of a sphere for y
+
yShift = balls[n-1].y - m.y/scale;                      // сдвиг курсора относительно центра шара по y
canvasBalls.onmousemove = mouseMove; // until the key is pressed - movement function works
+
canvasBalls.onmousemove = mouseMove; // пока клавиша нажата - работает функция перемещения
 
}
 
}
 
break;
 
break;
 
case (2):
 
case (2):
 
case(0):
 
case(0):
var x = balls[n/2].x - m.x/scale;                          // distance from the center of a sphere to the cursor on an axis x
+
var x = balls[n/2].x - m.x/scale;                          // расстояние от центра шара до курсора по оси x
var y = balls[n/2].y - m.y/scale;                          // distance from the center of a sphere to the cursor on an axis y
+
var y = balls[n/2].y - m.y/scale;                          // расстояние от центра шара до курсора по оси y
var rLen2 = x * x + y * y;                  // distance square between the cursor and the center of a sphere
+
var rLen2 = x * x + y * y;                  // квадрат расстояния между курсором и центром шара
if (rLen2 <= diag*diag) {                      // if the cursor pressed a sphere
+
if (rLen2 <= diag*diag) {                      // если курсор нажал на шар
xShift = balls[n/2].x - m.x/scale;                      // shift of the cursor concerning the center of a sphere on x
+
xShift = balls[n/2].x - m.x/scale;                      // сдвиг курсора относительно центра шара по x
yShift = balls[n/2].y - m.y/scale;                      // shift of the cursor concerning the center of a sphere for y
+
yShift = balls[n/2].y - m.y/scale;                      // сдвиг курсора относительно центра шара по y
canvasBalls.onmousemove = mouseMove; // until the key is pressed - movement function works
+
canvasBalls.onmousemove = mouseMove; // пока клавиша нажата - работает функция перемещения
 
}
 
}
 
break;
 
break;
Строка 735: Строка 735:
 
     };
 
     };
 
   
 
   
     // function is started at a key release of a mouse
+
     // функция запускается при отпускании клавиши мыши
 
     document.onmouseup = function() {
 
     document.onmouseup = function() {
         canvasBalls.onmousemove = null;        // when the key is released - there is no function of movement
+
         canvasBalls.onmousemove = null;        // когда клавиша отпущена - функции перемещения нету
 
     };
 
     };
 
   
 
   
     // function is started when moving a mouse (many times, at every moment of movement)
+
     // функция запускается при перемещении мыши (много раз, в каждый момент перемещения)
     // in our case works only with a viced key of a mouse
+
     // в нашем случае работает только с зажатой клавишей мыши
 
     function mouseMove(e) {
 
     function mouseMove(e) {
 
switch (f)
 
switch (f)
 
{
 
{
 
case(0):
 
case(0):
var m = mouseCoords(e);                    // we receive cursor coordinates of a mouse
+
var m = mouseCoords(e);                    // получаем координаты курсора мыши
 
balls[n-1].x = m.x/scale + xShift;
 
balls[n-1].x = m.x/scale + xShift;
 
balls[n-1].y = m.y/scale+ yShift;
 
balls[n-1].y = m.y/scale+ yShift;
Строка 760: Строка 760:
 
console.log(m.x/scale);
 
console.log(m.x/scale);
 
//console.log(r_nach);
 
//console.log(r_nach);
if (Math.abs(r_m)<(3*diag)) // we receive cursor coordinates of a mouse
+
if (Math.abs(r_m)<(3*diag)) // получаем координаты курсора мыши
 
{pr_x = m.x/scale + xShift*0.01 -balls[n-1].x;
 
{pr_x = m.x/scale + xShift*0.01 -balls[n-1].x;
 
pr_y = m.y/scale+yShift-balls[n-1].y;
 
pr_y = m.y/scale+yShift-balls[n-1].y;
Строка 769: Строка 769:
 
break;
 
break;
 
case(2):
 
case(2):
var m = mouseCoords(e);                    // we receive cursor coordinates of a mouse balls[n/2].x = m.x/scale + xShift;
+
var m = mouseCoords(e);                    // получаем координаты курсора мыши
 +
balls[n/2].x = m.x/scale + xShift;
 
balls[n/2].y = m.y/scale+ yShift;
 
balls[n/2].y = m.y/scale+ yShift;
 
draw();
 
draw();
Строка 776: Строка 777:
 
     }
 
     }
 
   
 
   
     // function returns cursor coordinates of a mouse
+
     // функция возвращает координаты курсора мыши
 
     function mouseCoords(e) {
 
     function mouseCoords(e) {
 
         var m = [];
 
         var m = [];
Строка 794: Строка 795:
 
     function draw()  
 
     function draw()  
 
{       
 
{       
         context.clearRect(0, 0, w * scale, h * scale); // to clear the screen
+
         context.clearRect(0, 0, w * scale, h * scale); // очистить экран
 
         for (var i =0;i<n;i++)
 
         for (var i =0;i<n;i++)
 
{
 
{
 
    b = balls[i];
 
    b = balls[i];
 
context.beginPath();
 
context.beginPath();
context.translate(b.x*scale,b.y * scale);//transfer in the center
+
context.translate(b.x*scale,b.y * scale);//перенос в центр
 
context.rotate(inRad(b.fi_x-45));
 
context.rotate(inRad(b.fi_x-45));
 
context.fillRect(-rectW/2, -rectH/2, rectW, rectH);
 
context.fillRect(-rectW/2, -rectH/2, rectW, rectH);
 
context.rotate(-inRad(b.fi_x-45));
 
context.rotate(-inRad(b.fi_x-45));
context.translate(-b.x * scale, -b.y * scale);//transfer back
+
context.translate(-b.x * scale, -b.y * scale);//перенос обратно
 
context.closePath();
 
context.closePath();
 
context.stroke();  
 
context.stroke();  
Строка 811: Строка 812:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
File '''"v-model.html"'''
+
Файл '''"v-model.html"'''
 
<syntaxhighlight lang="html5" line start="1" enclose="div">
 
<syntaxhighlight lang="html5" line start="1" enclose="div">
 
  <!DOCTYPE html>
 
  <!DOCTYPE html>
Строка 820: Строка 821:
 
  </head>
 
  </head>
 
  <body>
 
  <body>
  <!-- Addition of area for drawing of a particle -->
+
  <!-- Добавление области для рисования частицы -->
 
     <canvas id="canvasBalls" width="800" height="400" style="border:1px solid #000000;"></canvas>
 
     <canvas id="canvasBalls" width="800" height="400" style="border:1px solid #000000;"></canvas>
 
 
Строка 830: Строка 831:
 
             <!-- document.getElementById('Slider_02').value = this.value; -->
 
             <!-- document.getElementById('Slider_02').value = this.value; -->
 
         ">
 
         ">
<!-- Addition of a slider -->
+
<!-- Добавление слайдера -->
 
         <!-- <input type="range" id="Slider_02" style="width: 100px;" oninput="app.set_02(this.value); document.getElementById('Text_02').value = this.value;"> -->
 
         <!-- <input type="range" id="Slider_02" style="width: 100px;" oninput="app.set_02(this.value); document.getElementById('Text_02').value = this.value;"> -->
 
         </I></font>
 
         </I></font>
Строка 839: Строка 840:
 
             <!-- document.getElementById('Slider_02').value = this.value; -->
 
             <!-- document.getElementById('Slider_02').value = this.value; -->
 
         ">
 
         ">
<!-- Addition of a slider -->
+
<!-- Добавление слайдера -->
 
         <!-- <input type="range" id="Slider_02" style="width: 100px;" oninput="app.set_02(this.value); document.getElementById('Text_02').value = this.value;"> -->
 
         <!-- <input type="range" id="Slider_02" style="width: 100px;" oninput="app.set_02(this.value); document.getElementById('Text_02').value = this.value;"> -->
 
         </I></font>
 
         </I></font>
Строка 848: Строка 849:
 
             <!-- document.getElementById('Slider_02').value = this.value; -->
 
             <!-- document.getElementById('Slider_02').value = this.value; -->
 
         ">
 
         ">
<!-- Addition of a slider -->
+
<!-- Добавление слайдера -->
 
         <!-- <input type="range" id="Slider_02" style="width: 100px;" oninput="app.set_02(this.value); document.getElementById('Text_02').value = this.value;"> -->
 
         <!-- <input type="range" id="Slider_02" style="width: 100px;" oninput="app.set_02(this.value); document.getElementById('Text_02').value = this.value;"> -->
 
         </I></font>
 
         </I></font>
Строка 857: Строка 858:
 
             <!-- document.getElementById('Slider_02').value = this.value; -->
 
             <!-- document.getElementById('Slider_02').value = this.value; -->
 
         ">
 
         ">
<!-- Addition of a slider -->
+
<!-- Добавление слайдера -->
 
         <!-- <input type="range" id="Slider_02" style="width: 100px;" oninput="app.set_02(this.value); document.getElementById('Text_02').value = this.value;"> -->
 
         <!-- <input type="range" id="Slider_02" style="width: 100px;" oninput="app.set_02(this.value); document.getElementById('Text_02').value = this.value;"> -->
 
         </I></font>
 
         </I></font>
Вам запрещено изменять защиту статьи. 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:

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