function circle (r, theta) { return new THREE.Vector2( r * Math.cos(theta), //x r * Math.sin(theta) //y ); } document.addEventListener("DOMContentLoaded", function () { var renderer = new THREE.CanvasRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); //renderer.setClearColor(0x000000); document.body.appendChild(renderer.domElement); var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 100); camera.position.set(0,0,15); camera.lookAt(new THREE.Vector3(0,0,0)); scene.add(camera); var ball = new THREE.Mesh( new THREE.SphereGeometry(1, 16, 16), new THREE.MeshNormalMaterial() ); scene.add(ball); var t = 0; function frame () { requestAnimationFrame(frame); t += 0.02; var c = circle(5, t); ball.position.set(c.x, c.y, 0); ball.rotation.set(Math.PI/2,t,0); renderer.render(scene, camera); } requestAnimationFrame(frame); });