Редактирование: Мещерский. Задача 5.8

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

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 16: Строка 16:
 
==Решение задачи==
 
==Решение задачи==
  
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/Rubinova/Statics/Statics.html |width=830 |height=600 |border=0 }}
+
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/Rubinova/Statics/M1.html |width=830 |height=600 |border=0 }}
  
  
Строка 82: Строка 82:
 
controls = new function()    // создаем переключатели, позволяющие изменять входные параметры
 
controls = new function()    // создаем переключатели, позволяющие изменять входные параметры
 
{
 
{
this.weightB = 30;    // вес первого тела   
+
this.weight1 = 30;    // вес первого тела   
this.weightA = 10;    // вес второго тела
+
this.weight2 = 10;    // вес второго тела
this.weightC = 60;    // вес третьего тела
+
this.weight3 = 60;    // вес третьего тела
this.coefficientB = 0.25;    // коэффициент трения первого тела
+
this.coefficient1 = 0.25;    // коэффициент трения первого тела
this.coefficientA = 0.1;    // коэффициент трения второго тела
+
this.coefficient2 = 0.1;    // коэффициент трения второго тела
this.coefficientC = 0.5;    // коэффициент трения третьего тела
+
this.coefficient3 = 0.5;    // коэффициент трения третьего тела
 
this.displayForces = true;    // модуль отображения задачи
 
this.displayForces = true;    // модуль отображения задачи
 
this.angle = "angle = ";    // вывод полученных в ходе решения задачи значений
 
this.angle = "angle = ";    // вывод полученных в ходе решения задачи значений
this.angle1 = "angle = ";
+
this.t12 = "T12 = ";
this.tab = "Tab = ";
+
this.t13 = "T13 = ";
this.tbc = "Tbc = ";
 
 
}
 
}
  
 
var gui = new dat.GUI();    // позволяем менять каждый из параметров в определенном диапазоне, в случае изменения вызываем функцию, перестраивающую выводимую на экран картинку
 
var gui = new dat.GUI();    // позволяем менять каждый из параметров в определенном диапазоне, в случае изменения вызываем функцию, перестраивающую выводимую на экран картинку
gui.add(controls, 'weightA',0,100).onChange(ReDraw);
+
gui.add(controls, 'weight1',0,100).onChange(ReDraw);
gui.add(controls, 'weightB',0,100).onChange(ReDraw);
+
gui.add(controls, 'weight2',0,100).onChange(ReDraw);
gui.add(controls, 'weightC',0,100).onChange(ReDraw);
+
gui.add(controls, 'weight3',0,100).onChange(ReDraw);
gui.add(controls, 'coefficientB',0,1).onChange(ReDraw);
+
gui.add(controls, 'coefficient1',0,1).onChange(ReDraw);
gui.add(controls, 'coefficientA',0,1).onChange(ReDraw);
+
gui.add(controls, 'coefficient2',0,1).onChange(ReDraw);
gui.add(controls, 'coefficientC',0,1).onChange(ReDraw);
+
gui.add(controls, 'coefficient3',0,1).onChange(ReDraw);
 
gui.add(controls, 'displayForces').onChange(Change);    // параметр, определяющий вариант отображения задачи (с отображением сил и без отображения)
 
gui.add(controls, 'displayForces').onChange(Change);    // параметр, определяющий вариант отображения задачи (с отображением сил и без отображения)
 
gui.add(controls, 'angle').listen();
 
gui.add(controls, 'angle').listen();
gui.add(controls, 'angle1').listen();
+
gui.add(controls, 't12').listen();
gui.add(controls, 'tab').listen();
+
gui.add(controls, 't13').listen();
gui.add(controls, 'tbc').listen();
 
  
 
stats = initStats();
 
stats = initStats();
Строка 157: Строка 155:
 
plane.remove(c3);
 
plane.remove(c3);
 
scene.remove(plane);
 
scene.remove(plane);
P1 = controls.weightB;    // меняем значения параметров на те, что ввел пользователь
+
P1 = controls.weight1;    // меняем значения параметров на те, что ввел пользователь
P2 = controls.weightA;
+
P2 = controls.weight2;
P3 = controls.weightC;
+
P3 = controls.weight3;
f1 = controls.coefficientB;
+
f1 = controls.coefficient1;
f2 = controls.coefficientA;
+
f2 = controls.coefficient2;
f3 = controls.coefficientC;
+
f3 = controls.coefficient3;
 
Draw();
 
Draw();
 
}
 
}
Строка 170: Строка 168:
 
al = Math.atan((P1*f1+P2*f2+P3*f3)/(P1+P2+P3));
 
al = Math.atan((P1*f1+P2*f2+P3*f3)/(P1+P2+P3));
 
controls.angle = "angle = " + al;
 
controls.angle = "angle = " + al;
controls.angle1 = "angle = " + 180*al/Math.PI;
 
 
//alert (al);
 
//alert (al);
  
Строка 245: Строка 242:
 
c1.add( arr1_3 );    // прикрепляем к нужному телу
 
c1.add( arr1_3 );    // прикрепляем к нужному телу
  
controls.tbc = "Tbc = " + P3*(f3-Math.tan(al));    // вывод решения на экран
+
controls.t13 = "T13 = " + P3*(f3-Math.tan(al));    // вывод решения на экран
  
 
var ar1_2 = new THREE.Vector3(-1,0,0);    // создаем геометрию вектора, отображающего натяжение нити, соединяющей первое и второе тело
 
var ar1_2 = new THREE.Vector3(-1,0,0);    // создаем геометрию вектора, отображающего натяжение нити, соединяющей первое и второе тело
Строка 251: Строка 248:
 
c1.add( arr1_2 );    // прикрепляем к нужному телу
 
c1.add( arr1_2 );    // прикрепляем к нужному телу
  
controls.tab = "Tab = " + P2*(Math.tan(al)-f2);    // вывод решения на экран
+
controls.t12 = "T12 = " + P2*(Math.tan(al)-f2);    // вывод решения на экран
  
 
arr1_t = new THREE.ArrowHelper( ar1_3, origin, f1*length1, hex3);    // создаем вектор, отображающий силу трения
 
arr1_t = new THREE.ArrowHelper( ar1_3, origin, f1*length1, hex3);    // создаем вектор, отображающий силу трения
Строка 302: Строка 299:
 
{
 
{
 
stats.update();
 
stats.update();
P1 = controls.weightB;
+
P1 = controls.weight1;
P2 = controls.weightA;
+
P2 = controls.weight2;
P3 = controls.weightC;
+
P3 = controls.weight3;
f1 = controls.coefficientB;
+
f1 = controls.coefficient1;
f2 = controls.coefficientA;
+
f2 = controls.coefficient2;
f3 = controls.coefficientC;
+
f3 = controls.coefficient3;
 
requestAnimationFrame(renderScene);
 
requestAnimationFrame(renderScene);
 
renderer.render(scene,camera);
 
renderer.render(scene,camera);
Строка 334: Строка 331:
 
window.addEventListener('resize',onResize,true);
 
window.addEventListener('resize',onResize,true);
 
</script>
 
</script>
 +
</div>
Вам запрещено изменять защиту статьи. 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:

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