hw5 helper
with orbitControls, XZgrid, info
by zx22516969
HTML
<div id="info">Homework 5 Helper
<br>Right click to move RED dot<br>
<button id='reset'>
Reset
</button>
</div>
<script src="http://cdnjs.cloudflare.com/ajax/libs/three.js/92/three.min.js"></script>
<script src="https://rawgit.com/mrdoob/three.js/master/examples/js/Detector.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stats.js/r16/Stats.min.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
CSS
#info {
position: absolute;
top: 0px;
width: 100%;
padding: 10px;
text-align: center;
color: #ffff00
}
body {
overflow: hidden;
}
JavaScript
$("#reset").click(function() {
//x[0] = Math.PI/2, x[1] = 0;
t = 0;
});
var camera, scene, renderer;
var circle, line;
var x = []; // x0: theta, x1: theta_dot
var mousePoint;
var mouse = new THREE.Vector2();
var stats;
var t, dt;
var g, l;
var lastTime = 0;
init();
animate();
function init() {
renderer = new THREE.WebGLRenderer({
antialias: true
});
// STATS
stats = new Stats();
stats.domElement.style.position = 'absolute';
stats.domElement.style.top = '0px';
stats.domElement.style.zIndex = 100;
document.body.appendChild( stats.domElement );
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0x888888);
document.body.appendChild(renderer.domElement);
t = 0;
dt = 0.253;
l = 3;
g = 10;
x[0] = Math.PI/6;
x[1] = 0;
scene = new THREE.Scene();
camera = new THREE.OrthographicCamera(-5, 5, 7, -3, -10, 100);
camera.position.z = 10;
/////////////////////////////
let grid = new THREE.GridHelper (20,20, 'white','white')
scene.add (grid)
grid.rotation.x = Math.PI/2
circle = new THREE.Mesh (new THREE.CircleGeometry (0.5,20), new THREE.MeshBasicMaterial());
scene.add (circle);
let geometry = new THREE.Geometry();
geometry.vertices.push (new THREE.Vector3(0,4,0));
geometry.vertices.push (new THREE.Vector3());
let material = new THREE.LineDashedMaterial(
{color:0xffff00,
gapSize:0.43, dashSize:0.43}
);
line = new THREE.Line (geometry, material)
scene.add (line)
line.computeLineDistances();
//////////////////////////////////
window.addEventListener('resize', onWindowResize, false);
window.addEventListener('mousedown', onDocumentMouseDown, false);
}
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}
function onDocumentMouseDown(event) {
event.preventDefault();
// NDC: [-1,1]x[-1,1]
mouse.x = (event.clientX /...