Текущая версия |
Ваш текст |
Строка 13: |
Строка 13: |
| == Аннотация проекта == | | == Аннотация проекта == |
| | | |
− | Данный проект посвящен изучению динамики движения футбольного мяча во время штрафного удара. В ходе работы над проектом был рассмотрен конкретный штрафной удар, который был исполнен Роберто Карлосом в товарищеском матче Бразилия - Франция. Этот удар был симулирован на языке JavaScript <ref>[https://ru.wikipedia.org/wiki/JavaScript JavaScript]</ref>.
| |
| | | |
| == Формулировка задачи == | | == Формулировка задачи == |
− | | + | Смоделировать процесс движения футбольного мяча во время штрфного удара. |
− | * Написать программу, которая моделирует процесс движения футбольного мяча во время штрафного удара, с учетом внешних сил и воздействий.
| |
| | | |
| == Общие сведения по теме == | | == Общие сведения по теме == |
− | Роберто Карлос забил в 1997 году в ворота сборной Франции невероятный по красоте гол.
| |
| | | |
− | Мяч был установлен примерно в 30 - 35 м от ворот соперников, ближе к правому краю поля. После удара Карлоса мяч полетел далеко в правую сторону, облетел «стенку» в метре от нее и после этого чудесным образом мяч повернул влево и влетел в ворота - к изумлению игроков, вратаря и представителей СМИ.
| |
− |
| |
− | Этот удар стал наглядным примером силы Магнуса, действующей на тело, движущееся с вращением при обтекании его потоком жидкости или газа.
| |
− |
| |
− | [[Файл:g33viT3.gif|thumb|Траектория движения мяча во время штрафного удара|450px]]
| |
| | | |
| == Решение == | | == Решение == |
− | <math>\vec{F_{р}} = \vec{F_{тяж}} + \vec{F_{сопр}} + \vec{F_{м}} </math>, где
| + | [[Файл:Kursovaia.jpg|thumb|Положение мяча и стенки из игроков во время исполнения штрафного удара|450px]] |
− | | |
− | <math> \vec{F_{р}} </math> - Равнодействующая сил на мяч;
| |
− | | |
− | <math> \vec{F_{тяж}} </math> - Сила тяжести, действующая на мяч;
| |
− | | |
− | <math> \vec{F_{сопр}} </math> - Сила сопротивления воздуха;
| |
− | | |
− | <math> \vec{F_{м}} </math> - Сила Магнуса <ref>
| |
− | [https://ru.wikipedia.org/wiki/Эффект_Магнуса Эффект Магнуса]</ref>. | |
− | | |
− | | |
− | Сила тяжести:
| |
− | | |
− | <big><math> \vec{F_{тяж}} = m\vec{g} </math></big>, где
| |
− |
| |
− | <math> m </math> - масса мяча;
| |
− | | |
− | <math> g </math> - ускорение свободного падения.
| |
− | | |
− | | |
− | Силу сопротивления воздуха будем считать с помощью закона Стокса:
| |
− | | |
− | <big><math>\vec{F} = -6πrη\vec{v} </math></big> , где
| |
− | | |
− | <math>\vec{F}</math> - сила Стокса,
| |
− | | |
− | <math>r</math> - радиус мяча,
| |
− | | |
− | <math>η</math> - динамическая вязкость,
| |
− | | |
− | <math>\vec{v}</math> - скорость мяча.
| |
− | | |
− | | |
− | Силу Магнуса примем вида:
| |
− | | |
− | <big><math>\vec{F} = 2Sρr\vec{u}\times\vec{ω} </math></big> , где
| |
− | | |
− | <math>\vec{F}</math> - сила Магнуса,
| |
− | | |
− | <math>S</math> - площадь, на которую действует сила
| |
− | | |
− | <math>ρ</math> - плотность воздуха,
| |
− | | |
− | <math>r</math> - радиус мяча,
| |
− | | |
− | <math>\vec{u}</math> - относительная скорость мяча,
| |
− | | |
− | <math>\vec{ω}</math> - угловая скорость мяча.
| |
− | | |
− | Применив метод Эйлера, получим формулы для нахождения скорости и координаты мяча:
| |
− | | |
− | <big><math>
| |
− | \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_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_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 \\
| |
− | \end{cases}
| |
− | </math></big>
| |
− | | |
− | <big><math>
| |
− | \begin{cases}
| |
− | x^{i+1} = x^i + v_x^i\Delta t \\
| |
− | y^{i+1} = y^i + v_y^i\Delta t \\
| |
− | z^{i+1} = z^i + v_z^i\Delta t \\
| |
− | \end{cases}
| |
− | </math></big>;
| |
− | | |
− | | |
− | '''Возможности программы:'''
| |
− | | |
− | | |
− | * По нажатию кнопки "Start" запускается процесс прорисовки траектории полета мяча, с выставленными параметрами.
| |
− | * По нажатию кнопки "Update" мы обновляем страницу и можем выставить новые начальные значения(условия) полета мяча.
| |
− | {{#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: |
Строка 33: |
| == Ссылки по теме == | | == Ссылки по теме == |
| | | |
− | == Примечания ==
| |
− | <references/>
| |
| | | |
| == См. также == | | == См. также == |