ClarkeRubber

JS being shit

Apr 30th, 2012
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 3.67 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>James' le' derp gravity sim</title>
  5.     <meta charset="utf-8">
  6.     <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  7.     <style>
  8.         body {
  9.             font-family: Monospace;
  10.             background-color: #f0f0f0;
  11.             margin: 0px;
  12.             overflow: hidden;
  13.         }
  14.     </style>
  15. </head>
  16. <body>
  17. <script src='../three.js/build/Three.js'></script>
  18. <script src="../three.js/examples/js/Stats.js"></script>
  19. <script>
  20.  
  21.     var camera, scene, renderer,
  22.     geometry, material;
  23.    
  24.     var mass, interval, acceleration, distance;
  25.     var points = mesh = objects = velocities = [];
  26.    
  27.     var difx, dify, difz, oldx, oldy, oldz, accx, accy, accz, multiplierx, multipliery, multiplierz;
  28.     init();
  29.     animate();
  30.    
  31.     function movePoints(points, mass, interval){
  32.        
  33.         for(var i = 0; i < points.length; i++){
  34.        
  35.             for(var x = 0; x < points.length; x++){
  36.                
  37.                 difx = points[x][0] - points[i][0];
  38.                 dify = points[x][1] - points[i][1];
  39.                 difz = points[x][2] - points[i][2];
  40.  
  41.                 distance = Math.pow(difx, 2) + Math.pow(dify, 2) + Math.pow(difz, 2);
  42.                
  43.                 if(distance != 0 && distance > Math.pow(150, 2)){
  44.                     acceleration = mass / distance;
  45.                    
  46.                     multiplierx = difx && difx / Math.abs(difx);
  47.                     multipliery = dify && dify / Math.abs(dify);
  48.                     multiplierz = difz && difz / Math.abs(difz);
  49.                    
  50.                     accx += 0.5*multiplierx*Math.abs(acceleration*difx/distance)*Math.pow(interval, 2);
  51.                     accy += 0.5*multipliery*Math.abs(acceleration*dify/distance)*Math.pow(interval, 2);
  52.                     accz += 0.5*multiplierz*Math.abs(acceleration*difz/distance)*Math.pow(interval, 2);
  53.                 }
  54.             }
  55.            
  56.             mesh[i].position.x = velocities[i][0]*interval + accx;
  57.             mesh[i].position.y = velocities[i][1]*interval + accy;
  58.             mesh[i].position.z = velocities[i][2]*interval + accz;
  59.            
  60.             velocities[i][0] =  (mesh[i].position.x - points[i][0])/interval;
  61.             velocities[i][1] =  (mesh[i].position.y - points[i][1])/interval;
  62.             velocities[i][2] =  (mesh[i].position.z - points[i][2])/interval;
  63.         }
  64.        
  65.     }
  66.  
  67.     function init() {
  68.  
  69.         scene = new THREE.Scene();
  70.  
  71.         camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
  72.         camera.position.z = 1000;
  73.         scene.add( camera );
  74.  
  75.         geometry = new THREE.SphereGeometry( 100, 10, 10 );
  76.         //material = new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff, wireframe: true } );
  77.        
  78.         for(var i = 0; i < 10; i++){
  79.             mesh[i] = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff, wireframe: true } ) );
  80.             scene.add(mesh[i]);
  81.             mesh[i].position.x = Math.floor(Math.random()*window.innerWidth - window.innerWidth/2);
  82.             mesh[i].position.y = Math.floor(Math.random()*window.innerHeight - window.innerHeight/2);
  83.             mesh[i].position.z = Math.floor(Math.random()*500 - 250);
  84.         }
  85.        
  86.        renderer = new THREE.CanvasRenderer();
  87.        renderer.setSize( window.innerWidth, window.innerHeight );
  88.  
  89.        document.body.appendChild( renderer.domElement );
  90.  
  91.    }
  92.  
  93.    function animate() {
  94.  
  95.        requestAnimationFrame( animate );
  96.        render();
  97.  
  98.    }
  99.  
  100.    function render() {
  101.        
  102.         for(var x = 0; x < mesh.length; x++){
  103.             objects[x][0] = mesh[x].position.x;
  104.             objects[x][1] = mesh[x].position.y;
  105.             objects[x][2] = mesh[x].position.z;
  106.            
  107.             mesh[x].rotation.x += Math.random()*0.05;
  108.             mesh[x].rotation.y += Math.random()*0.05;
  109.             mesh[x].rotation.z += Math.random()*0.05;
  110.            
  111.             velocities[x][0] = 0;
  112.             velocities[x][1] = 0;
  113.             velocities[x][2] = 0;
  114.         }
  115.         movePoints(objects, 50000000, 1);
  116.        
  117.        renderer.render( scene, camera );
  118.  
  119.    }
  120.  
  121. </script>
  122. </body>
  123. </html>
Advertisement
Add Comment
Please, Sign In to add comment