Редактирование: Планетарный поворотный механизм
Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''''Задача:''''' С помощью языка программирования JavaScript смоделировать планетарный механизм. | '''''Задача:''''' С помощью языка программирования JavaScript смоделировать планетарный механизм. | ||
− | + | [[File:Untitled.jpg|thumb|Система трех цилиндрических блоков, соединенных кривошипом]] | |
− | [[File: | ||
− | |||
− | |||
− | |||
== Решение == | == Решение == | ||
− | {{#widget:Iframe |url= | + | {{#widget:Iframe |url=.html |width=800 |height=600 |border=0 }} |
− | Программа: [[Медиа: | + | Программа: [[Медиа:.zip|скачать]] |
<div class="mw-collapsible mw-collapsed"> | <div class="mw-collapsible mw-collapsed"> | ||
Строка 19: | Строка 15: | ||
{ | { | ||
var scene = new THREE.Scene(); | 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(0xffffff, 1); | |
− | + | render.setSize(window.innerWidth, window.innerHeight); | |
Строка 116: | Строка 112: | ||
gui.add(controls,'Radius',1,15); | gui.add(controls,'Radius',1,15); | ||
− | |||
− | |||
− | var trajectoryGeometry = new THREE.SphereGeometry(0.05, | + | |
+ | var trajectoryGeometry = new THREE.SphereGeometry(0.05, 16, 16); | ||
var trajectoryMaterial = new THREE.MeshBasicMaterial( {color: 0x000000,wireframe:true} ); | var trajectoryMaterial = new THREE.MeshBasicMaterial( {color: 0x000000,wireframe:true} ); | ||
− | var trajectory1Geometry = new THREE.SphereGeometry(0.05, | + | var trajectory1Geometry = new THREE.SphereGeometry(0.05, 16, 16); |
var trajectory1Material = new THREE.MeshBasicMaterial( {color: 0x0000ff,wireframe:true} ); | var trajectory1Material = new THREE.MeshBasicMaterial( {color: 0x0000ff,wireframe:true} ); | ||
− | + | var stats = initStats(); | |
var step = 0; | var step = 0; | ||
Строка 134: | Строка 129: | ||
function renderer() | function renderer() | ||
{ | { | ||
− | + | stats.update(); | |
Строка 158: | Строка 153: | ||
line.rotation.y-=controls.rotationSpeed*0.3; | line.rotation.y-=controls.rotationSpeed*0.3; | ||
requestAnimationFrame(renderer); | requestAnimationFrame(renderer); | ||
− | |||
cylinder.scale.set(controls.Radius,1,controls.Radius); | cylinder.scale.set(controls.Radius,1,controls.Radius); | ||
Строка 185: | Строка 179: | ||
scene.add( trajectory1 ); | scene.add( trajectory1 ); | ||
render.render(scene,camera); | render.render(scene,camera); | ||
− | + | ||
} | } | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
this.addOrbit = function(pos, radius) | this.addOrbit = function(pos, radius) | ||
{ | { | ||
Строка 220: | Строка 207: | ||
} | } | ||
+ | } | ||
+ | function initStats() | ||
+ | { | ||
+ | var stats = new Stats(); | ||
+ | stats.setMode(0); | ||
+ | stats.domElement.style.position='absolute'; | ||
+ | stats.domElement.style.left = '0px'; | ||
+ | stats.domElement.style.top = '0px'; | ||
+ | $("#Stats").append(stats.domElement); | ||
+ | return stats; | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |