Редактирование: Колебания в цилиндрической поверхности (48.12)

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

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 35: Строка 35:
  
 
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/shpentyydn/48.12.html |width=1200 |height=600}}
 
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/shpentyydn/48.12.html |width=1200 |height=600}}
 +
 +
/*<!DOCTYPE html>
 +
<html>
 +
<head>
 +
<title>Kursach</title>
 +
<script type="text/javascript" src=" http://tm.spbstu.ru/htmlets/libs/three.min.js"></script>
 +
    <script src ="http://tm.spbstu.ru/htmlets/libs/OrbitControls.js"></script>
 +
    <script type="text/javascript" src="http://tm.spbstu.ru/htmlets/libs/stats.min.js"></script>
 +
    <script type="text/javascript" src="http://tm.spbstu.ru/htmlets/libs/dat.gui.min.js"></script>
 +
<script src="https://code.jquery.com/jquery-1.9.1.js" integrity="sha256-e9gNBsAcA0DBuRWbm0oZfbiCyhjLrI6bmqAl5o+ZjUA=" crossorigin="anonymous"></script>
 +
<style>
 +
body{
 +
/* set margin to 0 and overflow to hidden,
 +
to use the complete page */
 +
margin: 0;
 +
overflow: hidden;
 +
}
 +
</style>
 +
    <!--
 +
  ������������ ����� ����� m �������� ��� �������� ���� ������� ��
 +
  ������������� ������������, �������� ���������� s=4a sinx, ��� s � ����,
 +
  ������������� �� ����� O, � x � ���� ����������� � �������� � �������������� ����.
 +
  ���������� �������� �����.
 +
    -->
 +
</head>
 +
<body>
 +
<!--Div which will hold the Output -->
 +
<div id="WebGL-output">
 +
</div>
 +
<!--Javascript code that runs our Three.js examples -->
 +
<script type="text/javascript">
 +
// once everything is loaded, we run our Three.js stuff.
 +
$(function () {
 +
var dt = 1/60;
 +
var g = 9.8;
 +
var controls = new function() {
 +
this.m = 2;
 +
this.animate = false;         
 +
this.fi0 = Math.PI/4;
 +
this.fi = this.fi0;
 +
this.a = 1;
 +
this.t = 0;
 +
this.s=0 ;
 +
this.calculate = function() {
 +
this.fi = this.fi0*Math.sin(-0.5*Math.sqrt(g/this.a)*this.t+this.fi0);
 +
//this.fi = (this.s/4/this.a);
 +
this.s = 4*this.a*this.fi;
 +
}
 +
this.calculate();
 +
this.setDefault = function() {
 +
this.t = 0;
 +
this.fi = this.fi0;
 +
}
 +
}
 +
var gui = new dat.GUI();
 +
var fi0Change = gui.add(controls, 'fi0',0,Math.PI/2);
 +
var aChange = gui.add(controls, 'a',0.2,2);
 +
var fiChange = gui.add(controls, 'fi').listen();
 +
var sChange = gui.add(controls, 's').listen();
 +
var tChange = gui.add(controls, 't').listen();
 +
var animateChange = gui.add(controls, 'animate');
 +
 +
fi0Change.onFinishChange(function(value) {
 +
controls.setDefault();
 +
controls.calculate();
 +
});
 +
 +
aChange.onFinishChange(function(value) {
 +
controls.setDefault();
 +
controls.calculate();
 +
});
 +
 +
animateChange.onFinishChange(function(value) {
 +
controls.setDefault();
 +
controls.calculate();
 +
});
 +
 +
fi0Change.onFinishChange(function(value) {
 +
controls.setDefault();
 +
controls.calculate();
 +
});
 +
 +
 +
var scene = new THREE.Scene();
 +
 +
//*
 +
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight , 0.1, 1000);
 +
camera.position.x = -25/2;
 +
camera.position.y = 40/2;
 +
camera.position.z = 30/2;
 +
//*/
 +
/*z
 +
var camera1 = new THREE.OrthographicCamera( window.innerWidth / - 50, window.innerWidth / 50, window.innerHeight / 50, window.innerHeight / - 50, 1, 100 );
 +
camera1.position.x = 0;
 +
camera1.position.y = 0;
 +
camera1.position.z = 30;
 +
*/
 +
var radius;
 +
var renderer = new THREE.WebGLRenderer();
 +
renderer.setClearColor(0xEEEEEE);
 +
renderer.setSize(window.innerWidth, window.innerHeight);
 +
radius = 4*controls.a;
 +
while(scene.children.length > 0){
 +
scene.remove(scene.children[0]);
 +
}
 +
var axes = new THREE.AxesHelper( 20 );
 +
              control = new THREE.OrbitControls(camera,renderer.domElement);
 +
 +
//scene.add(axes);
 +
// �����������
 +
var planeGeometry = new THREE.PlaneGeometry(radius*2,10,30,5);
 +
var planeMaterial = new THREE.MeshLambertMaterial({color: 0x6F482A, side: THREE.DoubleSide, wireframe: false});
 +
var plane = new THREE.Mesh(planeGeometry,planeMaterial);
 +
plane.rotation.x=-0.5*Math.PI;
 +
plane.position.x = 0;
 +
plane.position.y = 0;
 +
plane.position.z = 0;
 +
plane.receiveShadow = true;
 +
scene.add(plane);
 +
//�������������� �����������
 +
var geometry = new THREE.CylinderGeometry(radius, radius, 10, 32, 5, 0, 0, Math.PI);
 +
var material = new THREE.MeshLambertMaterial( {color: 0x6F482A, side: THREE.DoubleSide, wireframe: false} );
 +
var cylinder = new THREE.Mesh( geometry, material );
 +
cylinder.rotation.set(0,Math.PI*0.5,Math.PI*1.5);
 +
cylinder.position.set(0,radius,0);
 +
cylinder.receiveShadow = true;
 +
cylinder.castShadow = true;
 +
scene.add( cylinder );
 +
//�����
 +
var geometry = new THREE.SphereGeometry( radius/8, 16, 16 );
 +
var material = new THREE.MeshLambertMaterial( {color: 0xA8A8A8, side: THREE.DoubleSide, wireframe: false} );
 +
var sphere = new THREE.Mesh( geometry, material );
 +
sphere.position.set(radius*Math.sin(controls.fi)-radius/8*Math.sin(controls.fi),radius*(1-Math.cos(controls.fi))+radius/8*Math.cos(controls.fi),0);
 +
sphere.castShadow = true;
 +
scene.add( sphere );
 +
//������
 +
var c1 = new THREE.Mesh(new THREE.CylinderGeometry(0.05,0.05,2,32,5,1,0,2*Math.PI), new THREE.MeshBasicMaterial({color: 0xff0000}));
 +
c1.position = sphere.position;
 +
c1.rotation.set(0 ,controls.fi,0);
 +
scene.add(c1);
 +
var c2 = new THREE.Mesh(new THREE.CylinderGeometry(0,0.2,0.5,32,5,1,0,2*Math.PI), new THREE.MeshBasicMaterial({color: 0xff0000}));
 +
c2.position = sphere.position;
 +
c2.rotation.set(0 ,controls.fi,0);
 +
scene.add(c2);
 +
 +
// ����
 +
var spotLight = new THREE.SpotLight( 0xffffff );
 +
spotLight.position.set( 0, 80, 0 );
 +
spotLight.castShadow = true;
 +
scene.add(spotLight );
 +
camera.lookAt(scene.position);
 +
function renderScene() {
 +
if(controls.animate) {controls.t+=dt;}
 +
controls.calculate();
 +
sphere.position.set(radius*Math.sin(controls.fi)-radius/8*Math.sin(controls.fi),radius*(1-Math.cos(controls.fi))+radius/8*Math.cos(controls.fi),0);
 +
c1.position.set(sphere.position.x-Math.sin(controls.fi),sphere.position.y+Math.cos(controls.fi),sphere.position.z);
 +
c1.rotation.set(0,0,controls.fi);
 +
c2.position.set(sphere.position.x-2*Math.sin(controls.fi),sphere.position.y+2*Math.cos(controls.fi),sphere.position.z);
 +
c2.rotation.set(0,0,controls.fi);
 +
requestAnimationFrame(renderScene);
 +
renderer.render(scene, camera);
 +
}
 +
go = function() {
 +
 +
$("#WebGL-output").append(renderer.domElement);
 +
    renderScene();
 +
};
 +
go();
 +
});
 +
</script>
 +
</body>
 +
</html>
 +
/*
Вам запрещено изменять защиту статьи. 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:

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