ClarkeRubber

lol

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