09-rotate-object-around-point.html


<!DOCTYPE html>
<html>
<head>
    <title>three.js webgl - rotate object around point</title>
    <meta charset="utf-8">
    <style>
    body {
        background-color: #ffffff;
        margin: 0;
        overflow: hidden;
    }
    </style>
    <script src="../frameworks/three.min.js"></script>
    <script>
    var camera, scene, renderer;
    var geometry, material, mesh, ref, pivotPoint;
    var clock;

        function init() {
            renderer = new THREE.WebGLRenderer();
            renderer.setClearColor(0xffffff,1);
            renderer.setSize( window.innerWidth, window.innerHeight );
            document.body.appendChild( renderer.domElement );

            scene = new THREE.Scene();

            geometry = new THREE.SphereGeometry( 0.5, 20, 20 );
            material = new THREE.MeshPhongMaterial({ color: 0xff9800});
            ref = new THREE.Mesh( geometry, material );
            ref.position.set(0,0,0);
            scene.add( ref );

            pivotPoint = new THREE.Object3D();
            pivotPoint.position.set(0,0,0);
            scene.add( pivotPoint );
            
            geometry = new THREE.CubeGeometry( 0.5, 0.5, 0.5 );
            material = new THREE.MeshPhongMaterial({ color: 0x0000ff});
            mesh = new THREE.Mesh( geometry, material );
            pivotPoint.add(mesh);
            mesh.position.set(0,2,0)
            
            camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 100 );
            camera.position.set (0,0,-4);
            camera.lookAt(pivotPoint.position);
            
            var ambient = new THREE.AmbientLight(0xffffff,0.3);
            scene.add(ambient);
            var light = new THREE.DirectionalLight(0xffffff, 1, 100, 2 );
            light.position.set(10, 20 , 15); 
            light.castShadow = true;
            scene.add(light);

            clock = new THREE.Clock();
            window.addEventListener( 'resize', onWindowResize, false );

        }

        var dir=1;
        function animate() {
            requestAnimationFrame( animate );
            
            var delta =  clock.getDelta();

            pivotPoint.rotation.z += delta * 2;
            
            renderer.render( scene, camera );
        }
        
        function onWindowResize() {

                windowHalfX = window.innerWidth / 2;
                windowHalfY = window.innerHeight / 2;

                camera.aspect = window.innerWidth / window.innerHeight;
                camera.updateProjectionMatrix();

                renderer.setSize( window.innerWidth, window.innerHeight );

        }
        
        window.addEventListener("DOMContentLoaded", function(event) {
            init();
            animate();
        });
        
    </script>
</head>
<body>  
</body>
</html>