// Create Scene var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 ); // Create Renderer var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); // Add light var spotLight = new THREE.SpotLight( 0xffffff ); spotLight.position.set( 80, 200, 300 ); spotLight.castShadow = true; spotLight.shadowMapWidth = 1024; spotLight.shadowMapHeight = 1024; spotLight.shadowCameraNear = 500; spotLight.shadowCameraFar = 4000; spotLight.shadowCameraFov = 30; scene.add( spotLight ); camera.position.z = 5; // Add Plane var geometry = new THREE.PlaneGeometry( 40, 30, 2 ); // x, y, z var material = new THREE.MeshLambertMaterial( {color: 0x1ce3e3, side: THREE.DoubleSide} ); var plane = new THREE.Mesh( geometry, material ); scene.add( plane ); // Add Geometry var geometry = new THREE.IcosahedronGeometry( 3, 0 ); var material = new THREE.MeshLambertMaterial( { color: 0xecfac7 } ); var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); // Math var pi = 3.14159265359; var i = 1; // Current Iteration var c = 2; // Numer of times to circle var n = Math.pow( 2, 12 ); // Number of Particles var d = 1.5; // Sphere Diameter var theta = ( i / n ) * c * pi * 2; var thetaDegrees = theta * (180/pi); var eq; var eq2; var amplitude = 2; var frequency = .075; var phase = 1; function render() { i++; eq = Math.sin(.01); // Basic SINE = f(x) = A sin(wt + p) eq2 = amplitude * Math.sin((frequency*i) + phase); cube.rotation.x += eq2 / 100; cube.rotation.y = eq2 / 10; cube.position.x = eq2; requestAnimationFrame( render ); renderer.render( scene, camera ); } render();