Редактирование: Система блоков (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 - неподвижный блок.)]] | ||
− | == | + | == Решение == |
− | + | ||
− | Программа: [ | + | Программа: [[Медиа: twoblocks.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= | + | 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. | + | this.КИРПИЧИ = 25; |
− | this. | + | this.БЛОКИ = 1; |
− | this. | + | this.ДЕРЕВО = 1; |
− | this. | + | this.ВРАЩЕНИЕ = false; |
this.redraw = function () { | this.redraw = function () { | ||
− | M1=controls. | + | M1=controls.КИРПИЧИ; |
− | M2=controls. | + | M2=controls.БЛОКИ; |
− | M3=controls. | + | M3=controls.ДЕРЕВО; |
− | moving=controls. | + | moving=controls.ВРАЩЕНИЕ; |
}; | }; | ||
}; | }; | ||
var gui = new dat.GUI(); | var gui = new dat.GUI(); | ||
− | gui.add(controls, ' | + | gui.add(controls, 'КИРПИЧИ', 1, 50).onChange(controls.redraw); |
− | gui.add(controls, ' | + | gui.add(controls, 'БЛОКИ', 1, 50).onChange(controls.redraw); |
− | gui.add(controls, ' | + | gui.add(controls, 'ДЕРЕВО', 1, 50).onChange(controls.redraw); |
− | gui.add(controls, ' | + | 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; | ||
− | + | Y=t*t*(2*g*(2*M1-M2-M3)/(8*M1+2*M2+7*M3)); | |
− | + | X=2*(-1)*Math.sqrt(2*g*Y*(2*M1-M2-M3)/(8*M1+2*M2+7*M3))*((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. | + | 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{ | + | <math>\sqrt{2gh \frac{2M_{1}-M_{2}-M_{3}}{8M_{1}+2M_{1}+7M_{3}}}=t</math>, |
− | <math>h=\frac{ | + | <math>h=\frac{8M_{1}+2M_{1}+7M_{3}}{2g(2M_{1}-M_{2}-M_{3})}t^2</math>. |
== См. также == | == См. также == |