Редактирование: КП: Штрафной удар по воротам

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

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 13: Строка 13:
 
== Аннотация проекта ==
 
== Аннотация проекта ==
  
Данный проект посвящен изучению динамики движения футбольного мяча во время штрафного удара. В ходе работы над проектом был рассмотрен конкретный штрафной удар, который был исполнен Роберто Карлосом в товарищеском матче Бразилия - Франция. Этот удар был симулирован на языке JavaScript <ref>[https://ru.wikipedia.org/wiki/JavaScript JavaScript]</ref>.
+
Данный проект посвящен изучению динамики движения футбольного мяча во время штрафного удара. В ходе работы над проектом был рассмотрен конкретный штрафной удар, который был исполнен Роберто Карлосом в товарищеском матче Бразилия - Франция. Этот удар был симулирован на языке [https://ru.wikipedia.org/wiki/JavaScript JavaScript].
  
 
== Формулировка задачи ==
 
== Формулировка задачи ==
Строка 27: Строка 27:
  
 
[[Файл:g33viT3.gif|thumb|Траектория движения мяча во время штрафного удара|450px]]
 
[[Файл:g33viT3.gif|thumb|Траектория движения мяча во время штрафного удара|450px]]
 +
 +
 +
'''Входные данные'''
 +
 +
* На основании <ref>[http://technicamolodezhi.ru/rubriki_tm/tehnika_i_sport/fizika_futbola статьи]</ref>, посвященной удару Роберто Карлоса можно вычленить входные данные для нашей программы и посмотреть на полученную в программе траекторию.
 +
 +
- <big><math> v_{0} = 35 (м/с) </math> - начальная скорость мяча</big>;
 +
 +
- <big><math> d = 35 (м) </math> - расстояние от мяча до ворот</big>;
 +
 +
- <big><math> \omega_{z} = 10 (об/с) =62.8 (рад/с)</math> - скорость вращения мяча во время полета</big>;
 +
 +
- <big>Также было известно, что погода была сухая и  безветренная, то есть скорость ветра по всем осям равна 0.<big>
  
 
== Решение ==
 
== Решение ==
Строка 37: Строка 50:
 
<math> \vec{F_{сопр}} </math> - Сила сопротивления воздуха;
 
<math> \vec{F_{сопр}} </math> - Сила сопротивления воздуха;
  
<math> \vec{F_{м}} </math> - Сила Магнуса <ref>
+
<math> \vec{F_{м}} </math> - Сила Магнуса.
[https://ru.wikipedia.org/wiki/Эффект_Магнуса Эффект Магнуса]</ref>.
 
  
  
Строка 65: Строка 77:
 
Силу Магнуса примем вида:
 
Силу Магнуса примем вида:
  
<big><math>\vec{F} = 2Sρr\vec{u}\times\vec{ω} </math></big> , где
+
<big><math>\vec{F} = 8πρr^3\vec{u}\times\vec{ω} </math></big> , где
  
 
<math>\vec{F}</math> - сила Магнуса,
 
<math>\vec{F}</math> - сила Магнуса,
 
<math>S</math> - площадь, на которую действует сила
 
  
 
<math>ρ</math> - плотность воздуха,
 
<math>ρ</math> - плотность воздуха,
Строка 83: Строка 93:
 
<big><math>
 
<big><math>
 
\begin{cases}
 
\begin{cases}
v_x^{i+1} = v_x^i + (-6πrηv_x^i/m + 2πρr^3(u_z^iω_y - u_y^iω_z)/m)\Delta t  \\
+
v_x^{i+1} = v_x^i + (-6πrηv_x^i/m + 8πρr^3(u_z^iω_y - u_y^iω_z)/m)\Delta t  \\
v_y^{i+1} = v_y^i + (-6πrηv_y^i/m + 2πρr^3(u_x^iω_z - u_z^iω_x)/m)\Delta t  \\
+
v_y^{i+1} = v_y^i + (-6πrηv_y^i/m + 8πρr^3(u_x^iω_z - u_z^iω_x)/m)\Delta t  \\
v_z^{i+1} = v_z^i + (-g-6πrηv_z^i/m + 2πρr^3(u_y^iω_x - u_x^iω_y)/m)\Delta t  \\
+
v_z^{i+1} = v_z^i + (-g-6πrηv_z^i/m + 8πρr^3(u_y^iω_x - u_x^iω_y)/m)\Delta t  \\
 
\end{cases}
 
\end{cases}
 
</math></big>
 
</math></big>
Строка 97: Строка 107:
 
</math></big>;
 
</math></big>;
  
 
'''Возможности программы:'''
 
 
 
* По нажатию кнопки "Start" запускается процесс прорисовки траектории полета мяча, с выставленными параметрами.
 
* По нажатию кнопки "Update" мы обновляем страницу и можем выставить новые начальные значения(условия) полета мяча.
 
 
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/filimonov/K_NIR.html |width=1150 |height=575 |border=0 }}
 
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/filimonov/K_NIR.html |width=1150 |height=575 |border=0 }}
 
<div class="mw-collapsible mw-collapsed">
 
'''Текст программы на языке JavaScript:''' <div class="mw-collapsible-content">
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
 
function main()
 
{
 
  var scene = new THREE.Scene();
 
  var camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 0.1, 1000);
 
  var render = new THREE.WebGLRenderer();
 
  render.setClearColor(0x87CEFA, 1);
 
  render.setSize(900, 450);
 
 
 
  //Половина футбольного поля
 
   
 
  var planeGeometry = new THREE.PlaneGeometry(52.5,70,32,32);
 
  var planeMaterial = new THREE.MeshLambertMaterial({color:0x009900});
 
  var plane = new THREE.Mesh(planeGeometry, planeMaterial);
 
  plane.position.x=0;
 
  plane.position.y=0;
 
  plane.position.z=0;
 
  scene.add(plane);
 
  //
 
  // Центр поля
 
 
 
  var line_geometry = new THREE.Geometry();
 
    line_geometry.vertices.push(new THREE.Vector3(-26.25,-35,0));
 
    line_geometry.vertices.push(new THREE.Vector3(-26.25,35,0));
 
  var  material_line = new THREE.LineBasicMaterial({ color: 0xEEEEEE, WireframeLinewidth: 10,wireframe: true, fog:false});
 
  var line1 = new THREE.Line(line_geometry,material_line); 
 
 
        scene.add( line1 );
 
 
  var curve = new THREE.EllipseCurve(
 
  -26.25,  0,            // ax, aY
 
  9.15, 9.15,          // xRadius, yRadius
 
  -0.5*Math.PI,  -1.5*Math.PI,  // aStartAngle, aEndAngle
 
  false            // aClockwise
 
  );
 
 
  var path = new THREE.Path( curve.getPoints( 50 ) );
 
  var geometry = path.createPointsGeometry( 50 );
 
  var material = new THREE.LineBasicMaterial( { color : 0xffffff } );
 
 
// Create the final Object3d to add to the scene
 
  var ellipse = new THREE.Line( geometry, material );
 
  scene.add(ellipse);
 
  ellipse.position.x=0;
 
  ellipse.position.y=0;
 
  ellipse.position.z=0;
 
  //
 
  //Штрафная
 
  var line_geometry = new THREE.Geometry();
 
    line_geometry.vertices.push(new THREE.Vector3(26.25,20.16,0));
 
    line_geometry.vertices.push(new THREE.Vector3(9.75,20.16,0));
 
  var  material_line = new THREE.LineBasicMaterial({ color: 0xEEEEEE, WireframeLinewidth: 10,wireframe: true, fog:false});
 
  var line = new THREE.Line(line_geometry,material_line); 
 
 
        scene.add( line );
 
  var line_geometry = new THREE.Geometry();
 
    line_geometry.vertices.push(new THREE.Vector3(26.25,-20.16,0));
 
    line_geometry.vertices.push(new THREE.Vector3(9.75,-20.16,0));
 
  var  material_line = new THREE.LineBasicMaterial({ color: 0xEEEEEE, WireframeLinewidth: 10,wireframe: true, fog:false});
 
  var line2 = new THREE.Line(line_geometry,material_line); 
 
 
        scene.add( line2 );
 
 
 
  var line_geometry = new THREE.Geometry();
 
    line_geometry.vertices.push(new THREE.Vector3(9.75,-20.16,0));
 
    line_geometry.vertices.push(new THREE.Vector3(9.75,20.16,0));
 
  var  material_line = new THREE.LineBasicMaterial({ color: 0xEEEEEE, WireframeLinewidth: 10,wireframe: true, fog:false});
 
  var line3 = new THREE.Line(line_geometry,material_line); 
 
 
        scene.add( line3 );
 
  // вратарская зона
 
  var line_geometry = new THREE.Geometry();
 
    line_geometry.vertices.push(new THREE.Vector3(20.75,-9.16,0));
 
    line_geometry.vertices.push(new THREE.Vector3(26.25,-9.16,0));
 
  var  material_line = new THREE.LineBasicMaterial({ color: 0xEEEEEE, WireframeLinewidth: 10,wireframe: true, fog:false});
 
  var line4 = new THREE.Line(line_geometry,material_line); 
 
 
        scene.add( line4 );
 
 
 
  var line_geometry = new THREE.Geometry();
 
    line_geometry.vertices.push(new THREE.Vector3(20.75,9.16,0));
 
    line_geometry.vertices.push(new THREE.Vector3(26.25,9.16,0));
 
  var  material_line = new THREE.LineBasicMaterial({ color: 0xEEEEEE, WireframeLinewidth: 10,wireframe: true, fog:false});
 
  var line5 = new THREE.Line(line_geometry,material_line); 
 
 
        scene.add( line5 );
 
 
 
  var line_geometry = new THREE.Geometry();
 
    line_geometry.vertices.push(new THREE.Vector3(20.75,-9.16,0));
 
    line_geometry.vertices.push(new THREE.Vector3(20.75,9.16,0));
 
  var  material_line = new THREE.LineBasicMaterial({ color: 0xEEEEEE, WireframeLinewidth: 10,wireframe: true, fog:false});
 
  var line6 = new THREE.Line(line_geometry,material_line); 
 
 
        scene.add( line6 );
 
  //
 
  // ворота
 
  var line_geometry = new THREE.Geometry();
 
    line_geometry.vertices.push(new THREE.Vector3(26.25,-3.66,0));
 
    line_geometry.vertices.push(new THREE.Vector3(26.25,3.66,0));
 
  var  material_line = new THREE.LineBasicMaterial({ color: 0xEEEEEE, WireframeLinewidth: 10,wireframe: true, fog:false});
 
  var line7 = new THREE.Line(line_geometry,material_line); 
 
 
        scene.add( line7 );
 
   
 
  var line_geometry = new THREE.Geometry();
 
    line_geometry.vertices.push(new THREE.Vector3(26.23,-3.66,0));
 
    line_geometry.vertices.push(new THREE.Vector3(26.23,3.66,0));
 
  var  material_line = new THREE.LineBasicMaterial({ color: 0xEEEEEE, WireframeLinewidth: 10,wireframe: true, fog:false});
 
  var line8 = new THREE.Line(line_geometry,material_line); 
 
 
        scene.add( line8 );
 
 
  var line_geometry = new THREE.Geometry();
 
    line_geometry.vertices.push(new THREE.Vector3(26.22,-3.66,0));
 
    line_geometry.vertices.push(new THREE.Vector3(26.22,3.66,0));
 
  var  material_line = new THREE.LineBasicMaterial({ color: 0xEEEEEE, WireframeLinewidth: 10,wireframe: true, fog:false});
 
  var line9 = new THREE.Line(line_geometry,material_line); 
 
 
        scene.add( line9 );
 
   
 
  var geometry = new THREE.CylinderGeometry( 0.12, 0.12, 2.44, 32 );
 
  var material = new THREE.MeshBasicMaterial( {color: 0x000000} );
 
  var cylinder = new THREE.Mesh( geometry, material );
 
  cylinder.rotation.x=0.5*Math.PI;
 
  cylinder.position.x=26.25;
 
  cylinder.position.y=-3.66;
 
  cylinder.position.z=1.22;
 
  scene.add( cylinder );
 
 
 
  var geometry = new THREE.CylinderGeometry( 0.12, 0.12, 2.44, 32 );
 
  var material = new THREE.MeshBasicMaterial( {color: 0x000000} );
 
  var cylinder1 = new THREE.Mesh( geometry, material );
 
  cylinder1.rotation.x=0.5*Math.PI;
 
  cylinder1.position.x=26.25;
 
  cylinder1.position.y=3.66;
 
  cylinder1.position.z=1.22;
 
  scene.add( cylinder1 );
 
 
 
  var geometry = new THREE.CylinderGeometry( 0.12, 0.12, 7.56, 32 );
 
  var material = new THREE.MeshBasicMaterial( {color: 0x000000} );
 
  var cylinder1 = new THREE.Mesh( geometry, material );
 
  cylinder1.position.x=26.25;
 
  cylinder1.position.y=0;
 
  cylinder1.position.z=2.44;
 
  scene.add( cylinder1 );
 
  //
 
  var curve = new THREE.EllipseCurve(
 
  15.25,  0,            // ax, aY
 
  9.15, 9.15,          // xRadius, yRadius
 
  0.7*Math.PI,  -0.7*Math.PI,  // aStartAngle, aEndAngle
 
  false            // aClockwise
 
  );
 
 
  var path = new THREE.Path( curve.getPoints( 50 ) );
 
  var geometry = path.createPointsGeometry( 50 );
 
  var material = new THREE.LineBasicMaterial( { color : 0xffffff } );
 
 
// Create the final Object3d to add to the scene
 
  var ellipse1 = new THREE.Line( geometry, material );
 
  scene.add(ellipse1);
 
  ellipse1.position.x=0;
 
  ellipse1.position.y=0;
 
  ellipse1.position.z=0;
 
  //точка пенальти
 
  var material = new THREE.MeshBasicMaterial({
 
  color: 0xffffff});
 
 
  var radius = 0.4;
 
  var segments = 32;
 
 
  var circleGeometry = new THREE.CircleGeometry( radius, segments );       
 
  var circle = new THREE.Mesh( circleGeometry, material );
 
  scene.add( circle );
 
  circle.position.x=15.25;
 
  circle.position.y=0;
 
  circle.position.z=0;
 
  // мяч
 
 
 
 
  var geometry = new THREE.SphereGeometry( 0.25, 32, 32 );
 
  var material = new THREE.MeshBasicMaterial( {color: 0xff0000} );
 
  var sphere = new THREE.Mesh( geometry, material );
 
  scene.add( sphere );
 
  sphere.position.x=-8.75;
 
  sphere.position.y=-0.75;
 
  sphere.position.z=0.25;
 
  //
 
  //стенка
 
  /**var planeGeometry = new THREE.PlaneGeometry(1,4,1,1);
 
    var planeMaterial = new THREE.MeshBasicMaterial({color: 0xcccccc});
 
    var plane = new THREE.Mesh(planeGeometry,planeMaterial);
 
    plane.position.x = 0,75;
 
    plane.position.y = -1,66;
 
    plane.position.z = 0;
 
    scene.add(plane);*/
 
 
 
  var geometry = new THREE.BoxGeometry( 0.5, 3.5, 1.8 );
 
  var material = new THREE.MeshBasicMaterial( {color: 0xcccccc} );
 
  var cube = new THREE.Mesh( geometry, material );
 
  cube.position.x = 0.75;
 
    cube.position.y = 0;
 
    cube.position.z = 0.9;
 
  scene.add( cube );
 
 
 
    var radius1 = 0.25;
 
  var segments1 = 32;
 
 
  var circle1Geometry = new THREE.CircleGeometry( radius1, segments1 );       
 
  var circle1 = new THREE.Mesh( circle1Geometry, material );
 
  scene.add( circle1 );
 
  circle1.position.x=0.75;
 
  circle1.position.y=-0.5;
 
  circle1.position.z=0.9;
 
 
 
 
 
 
 
  // положение камеры
 
  camera.position.x= 0;
 
  camera.position.y= 0;
 
  camera.position.z= 80;
 
  camera.lookAt(scene.position);
 
  $("#webGL").append(render.domElement);
 
 
 
  var  spotLight = new THREE.SpotLight(0xffffff);
 
  spotLight.position.set(0,0,250) 
 
  scene.add(spotLight);
 
 
 
  var trajectoryGeometry = new THREE.SphereGeometry(0.1, 16, 16);
 
  var trajectoryMaterial = new THREE.MeshBasicMaterial( {color: 0x000000,wireframe:true} );
 
 
 
 
 
 
 
  var controls = new function() {
 
    this.viscosity = 0.0000178;
 
    this.AirDensity = 1.2754;
 
    this.WindPowerX = 0;
 
    this.WindPowerY = 0;
 
    this.WindPowerZ = 0;
 
    this.BallX_AngularVelocity = 0;
 
    this.BallY_AngularVelocity =  0;
 
    this.BallZ_AngularVelocity = 10 * 6.28318530718;
 
    this.BallVelocityX = 35;
 
    this.BallVelocityY = -8.5;
 
    this.BallVelocityZ = 2.8;
 
  }
 
  var gui = new dat.GUI();
 
  gui.add(controls, 'viscosity',1,1.5);
 
  gui.add(controls, 'AirDensity',1,1.5);
 
 
 
 
  var guiScale = gui.addFolder('WindPower');
 
  guiScale.add(controls, 'WindPowerX', -100,100);
 
  guiScale.add(controls, 'WindPowerY', -100,100);
 
  guiScale.add(controls, 'WindPowerZ', -100,100);
 
 
 
  var guiPosition = gui.addFolder('AngularVelocity');
 
  guiPosition.add(controls, 'BallX_AngularVelocity', -100,100);
 
  guiPosition.add(controls, 'BallY_AngularVelocity', -100,100);
 
  guiPosition.add(controls, 'BallZ_AngularVelocity', -100,100);
 
 
 
  var guiRotation = gui.addFolder('BallLineVelocity');
 
  guiRotation.add(controls, 'BallVelocityX', 0,50);
 
  guiRotation.add(controls, 'BallVelocityY', -50,50);
 
  guiRotation.add(controls, 'BallVelocityZ', 0,50);
 
 
 
  control1 = new THREE.OrbitControls(camera);
 
  control1.dumping = 0.2;
 
 
 
 
 
 
 
  window.addEventListener('resize',onWindowResize,false);
 
  function onWindowResize()
 
  {
 
  camera.aspect = window.innerWidth/window.innerHeight;
 
  camera.updateProjectionMatrix();
 
  render.setSize(window.innerWidth,window.innerHeight);
 
 
  renderer();
 
}
 
  //var stats = initStats();
 
  var step = 0;
 
 
 
 
 
 
 
 
 
  var pi = Math.PI;
 
  var r = 0.11;
 
  var ro = controls.AirDensity;
 
  var nu = controls.viscosity;
 
  var m = 0.45;
 
  var i = 0;
 
  var vX = 0;
 
  var vY = 0;
 
  var vZ = 0;
 
  var Wx = controls.BallX_AngularVelocity ;
 
  var Wy = controls.BallY_AngularVelocity ;
 
  var Wz = controls.BallZ_AngularVelocity ;
 
  var dt = 0.01;
 
  var g = 9.81
 
 
 
  vX += controls.BallVelocityX;
 
  vY += controls.BallVelocityY;
 
  vZ += controls.BallVelocityZ;
 
 
  function renderer()
 
  {
 
    //stats.update();
 
 
 
   
 
        if (i == 0)
 
    {
 
      vX += controls.BallVelocityX;
 
      vY += controls.BallVelocityY;
 
      vZ += controls.BallVelocityZ;
 
      windX = controls.WindPowerX;
 
      windY =  controls.WindPowerY;
 
      windZ =  controls.WindPowerZ;
 
     
 
      Wx = controls.BallX_AngularVelocity;
 
      Wy = controls.BallY_AngularVelocity;
 
      Wz = controls.BallZ_AngularVelocity;
 
           
 
      i = 1;
 
     
 
    }
 
     
 
 
 
      if (sphere.position.z >= 0.25 && sphere.position.x <= 40)
 
      {
 
    var Ux = vX-windX;
 
    var Uy = vY-windY;
 
    var Uz = vZ-windZ;
 
      vX += (-6*pi*r*nu*vX/m + 2*pi*ro*r*r*r*((Uz)*Wy-((Uz))*Wz)/m)*dt;
 
      vY += (-6*pi*r*nu*vY/m + 2*pi*ro*r*r*r*((Ux)*Wz)-((Uz))*Wx/m)*dt;
 
      vZ += (-g-6*pi*r*nu*vZ/m + 2*pi*ro*r*r*r*((Uy)*Wx-((Ux))*Wy)/m)*dt;
 
     
 
 
      sphere.position.x += vX*dt;
 
      sphere.position.y += vY*dt;
 
      sphere.position.z += vZ*dt;
 
         
 
      var trajectory = new THREE.Mesh(trajectoryGeometry, trajectoryMaterial);
 
      trajectory.position.x = sphere.position.x;
 
      trajectory.position.y = sphere.position.y;
 
      trajectory.position.z = sphere.position.z;
 
     
 
      scene.add( trajectory );
 
      }
 
     
 
   
 
    requestAnimationFrame(renderer);
 
    control1.update();
 
    render.render(scene,camera);
 
   
 
 
 
  }
 
  this.start = renderer;
 
 
 
}
 
 
 
</syntaxhighlight>
 
</div>
 
  
 
== Обсуждение результатов и выводы ==
 
== Обсуждение результатов и выводы ==
  
 
* Таким образом, в ходе работы над проектом была написана программа, моделирующая траекторию движения мяча во время штрафного удара, а так же смоделирован конкретный удар, при известных условиях.
 
* Таким образом, в ходе работы над проектом была написана программа, моделирующая траекторию движения мяча во время штрафного удара, а так же смоделирован конкретный удар, при известных условиях.
 
+
* Подставив в программу данные, полученные учеными, можно увидеть как мяч залетает в ворота.
{{начало цитаты}}
 
 
 
'''Входные данные'''
 
 
 
* На основании статьи <ref>[http://technicamolodezhi.ru/rubriki_tm/tehnika_i_sport/fizika_futbola статья "Физика футбола"]</ref>, посвященной удару Роберто Карлоса можно вычленить входные данные для нашей программы и посмотреть на полученную в программе траекторию.
 
 
 
- <big><math> v_{0} = 35 (м/с) </math> - начальная скорость мяча</big>;
 
 
 
- <big><math> d = 35 (м) </math> - расстояние от мяча до ворот</big>;
 
 
 
- <big><math> \omega_{z} = 10 (об/с) =62.8 (рад/с)</math> - скорость вращения мяча во время полета</big>;
 
 
 
- <big>Также было известно, что погода была сухая и  безветренная, то есть скорость ветра по всем осям равна 0.</big>
 
 
 
* ''' Подставив в программу данные, полученные учеными, можно увидеть как мяч залетает в ворота.'''
 
 
 
{{конец цитаты}}
 
 
 
'''Вывод:'''
 
В случае, когда удар нанесен с другой угловой скоростью ( <math> \omega_{z} = 9 (об/с)</math>, в результате работы программы  можно увидеть, что мяч не залетает в ворота.
 
 
 
При угловой скорости мяча <math> \omega_{z} = 9 (об/с) </math> и при увеличении проекции начальной скорости в направлении удара <math> v_{x} = 45 (м/с) </math>, но с теми же значениями по ортогональным осям, мяч залетает в ворота.
 
 
 
На основании полученных результатов можно сказать, что мяч залетел с немалой долей удачи, так как даже с малым изменением параметров меняется вероятность попадания.
 
.
 
  
 
<br>
 
<br>
Скачать отчет:[[Медиа:KursovoyProektFilimonov.docx | Отчет]]
+
Скачать отчет:
 
<br>
 
<br>
 
Скачать презентацию:
 
Скачать презентацию:
Строка 511: Строка 121:
 
== Ссылки по теме ==
 
== Ссылки по теме ==
  
== Примечания ==
+
{{примечания|refs = |close = }}
<references/>
 
  
 
== См. также ==
 
== См. также ==
Вам запрещено изменять защиту статьи. 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:

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

Шаблоны, используемые на этой странице: