Редактирование: Система блоков (38.31)

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

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 2: Строка 2:
 
'''''Задача:''''' С помощью языка программирования JavaScript смоделировать систему блоков с грузом. Построить график зависимости скорости от прошедшего времени.
 
'''''Задача:''''' С помощью языка программирования JavaScript смоделировать систему блоков с грузом. Построить график зависимости скорости от прошедшего времени.
 
[[File:Mesher.png|150px|thumb|Система блоков с грузами (A - груз 1, B - груз 2, C - подвижный блок, D - неподвижный блок.)]]
 
[[File:Mesher.png|150px|thumb|Система блоков с грузами (A - груз 1, B - груз 2, C - подвижный блок, D - неподвижный блок.)]]
== Реализация при помощи JS ==
+
== Решение ==
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/Drepin/mesherskiy/38.31.html|width=940 |height=400 |border=0 }}
+
 
Программа: [http://tm.spbstu.ru/htmlets/Drepin/mesherskiy/Mesherskiy3831.zip Скачать]
+
Программа: [[File:Mesherskiy 38 31.zip|скачать]]
  
 
<div class="mw-collapsible mw-collapsed">
 
<div class="mw-collapsible mw-collapsed">
Строка 11: Строка 11:
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
function init() {
 
function init() {
const g=9.8;
+
const g=1/2;
 
var ctxp = canvas_plot.getContext("2d");
 
var ctxp = canvas_plot.getContext("2d");
 
var wp = canvas_plot.width;
 
var wp = canvas_plot.width;
Строка 41: Строка 41:
 
webGLRenderer.shadowMapEnabled = true;
 
webGLRenderer.shadowMapEnabled = true;
 
// create the ground plane
 
// create the ground plane
var textureGrass = THREE.ImageUtils.loadTexture("grasslight-big.jpg");
+
var textureGrass = THREE.ImageUtils.loadTexture("../assets/textures/ground/grasslight-big.jpg");
 
textureGrass.wrapS = THREE.RepeatWrapping;
 
textureGrass.wrapS = THREE.RepeatWrapping;
 
         textureGrass.wrapT = THREE.RepeatWrapping;
 
         textureGrass.wrapT = THREE.RepeatWrapping;
Строка 135: Строка 135:
 
document.getElementById("WebGL-output").appendChild(webGLRenderer.domElement);
 
document.getElementById("WebGL-output").appendChild(webGLRenderer.domElement);
 
var controls = new function () {
 
var controls = new function () {
this.bricks = 25;
+
this.КИРПИЧИ = 25;
this.blocks = 1;
+
this.БЛОКИ = 1;
this.wood = 1;
+
this.ДЕРЕВО = 1;
this.spin = false;
+
this.ВРАЩЕНИЕ = false;
 
             this.redraw = function () {
 
             this.redraw = function () {
M1=controls.bricks;
+
M1=controls.КИРПИЧИ;
M2=controls.blocks;
+
M2=controls.БЛОКИ;
M3=controls.wood;
+
M3=controls.ДЕРЕВО;
moving=controls.spin;
+
moving=controls.ВРАЩЕНИЕ;
 
             };
 
             };
 
         };
 
         };
  
 
         var gui = new dat.GUI();
 
         var gui = new dat.GUI();
gui.add(controls, 'bricks', 1, 50).onChange(controls.redraw);
+
gui.add(controls, 'КИРПИЧИ', 1, 50).onChange(controls.redraw);
gui.add(controls, 'blocks', 1, 50).onChange(controls.redraw);
+
gui.add(controls, 'БЛОКИ', 1, 50).onChange(controls.redraw);
gui.add(controls, 'wood', 1, 50).onChange(controls.redraw);
+
gui.add(controls, 'ДЕРЕВО', 1, 50).onChange(controls.redraw);
         gui.add(controls, 'spin', 0, 1).onChange(controls.redraw);
+
         gui.add(controls, 'ВРАЩЕНИЕ', 0, 1).onChange(controls.redraw);
 
gui.domElement.style.position = 'absolute';
 
gui.domElement.style.position = 'absolute';
 
         gui.domElement.style.left = '0px';
 
         gui.domElement.style.left = '0px';
 
document.getElementsByClassName('dg main a')[0].style.height= '400px' ;
 
document.getElementsByClassName('dg main a')[0].style.height= '400px' ;
 +
document.getElementsByClassName('dg main a')[0].style.top= '400px' ;
 +
        //controls.redraw();
 +
 
var trackballControls = new THREE.TrackballControls(camera, webGLRenderer.domElement);
 
var trackballControls = new THREE.TrackballControls(camera, webGLRenderer.domElement);
 
trackballControls.rotateSpeed = 1.0;
 
trackballControls.rotateSpeed = 1.0;
Строка 162: Строка 165:
 
         render();
 
         render();
 
function createMesh(geom, imageFile) {
 
function createMesh(geom, imageFile) {
var texture = THREE.ImageUtils.loadTexture(imageFile);
+
var texture = THREE.ImageUtils.loadTexture("../assets/textures/general/" + imageFile);
 
var mat = new THREE.MeshPhongMaterial();
 
var mat = new THREE.MeshPhongMaterial();
 
if(geom.type=='PlaneGeometry') mat.side = THREE.DoubleSide;
 
if(geom.type=='PlaneGeometry') mat.side = THREE.DoubleSide;
Строка 172: Строка 175:
 
scene.remove(line);
 
scene.remove(line);
 
t+=1/60;
 
t+=1/60;
if((2*M1-M2-M3)!=0)Y=t*t*(2*g*(2*M1-M2-M3))/(8*M1+2*M2+7*M3);
+
Y=t*t*(8*M1+2*M2+7*M3)/(2*g*(2*M1-M2-M3));
if(Y>0) X=(-1)*Y*((cylinder1.position.x-2.5-plane1.position.x)/Math.sqrt(Math.pow((plane1.position.x-cylinder1.position.x-2.5),2)+Math.pow((plane1.position.y-Y/2),2)));
+
X=(-1)*Y*((cylinder1.position.x-2.5-plane1.position.x)/Math.sqrt(Math.pow((plane1.position.x-cylinder1.position.x-2.5),2)+Math.pow((plane1.position.y-Y/2),2)));
 
 
 
cylinder2.rotation.y =-Y/5;
 
cylinder2.rotation.y =-Y/5;
Строка 264: Строка 267:
 
// Align top-left
 
// Align top-left
 
stats.domElement.style.position = 'absolute';
 
stats.domElement.style.position = 'absolute';
stats.domElement.style.right = '0px';
+
stats.domElement.style.left = '0px';
 
stats.domElement.style.top = '0px';
 
stats.domElement.style.top = '0px';
 
document.getElementById("Stats-output").appendChild(stats.domElement);
 
document.getElementById("Stats-output").appendChild(stats.domElement);
Строка 279: Строка 282:
 
*stats.js
 
*stats.js
 
*dat.gui.js
 
*dat.gui.js
 +
*chroma.js
 
*TrackballControls.js
 
*TrackballControls.js
  
 
== Возможности программы ==
 
== Возможности программы ==
  
*Изменение положения камеры и включение движения вокруг системы
 
*Интерактивное представление скорости в виде графика
 
*Изменение масс грузов
 
  
 
== Решение частного случая ==
 
== Решение частного случая ==
Строка 316: Строка 317:
 
<math>\dot{h}=2 \sqrt{2gh \frac{2M_{1}-M_{2}-M_{3}}{8M_{1}+2M_{1}+7M_{3}}}</math>, интегрируя, получаем:
 
<math>\dot{h}=2 \sqrt{2gh \frac{2M_{1}-M_{2}-M_{3}}{8M_{1}+2M_{1}+7M_{3}}}</math>, интегрируя, получаем:
  
<math>\sqrt{h}=\sqrt{2g \frac{2M_{1}-M_{2}-M_{3}}{8M_{1}+2M_{1}+7M_{3}}}t</math>,
+
<math>\sqrt{2gh \frac{2M_{1}-M_{2}-M_{3}}{8M_{1}+2M_{1}+7M_{3}}}=t</math>,
  
<math>h=\frac{2g(2M_{1}-M_{2}-M_{3})}{8M_{1}+2M_{1}+7M_{3}}t^2</math>.
+
<math>h=\frac{8M_{1}+2M_{1}+7M_{3}}{2g(2M_{1}-M_{2}-M_{3})}t^2</math>.
  
 
== См. также ==
 
== См. также ==
Вам запрещено изменять защиту статьи. 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:

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