Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. for (i in 0...particles.length) {
  3.     var p1 = particles[i];
  4.     p1.vx += p1.fx*dt;
  5.     p1.vy += p1.fy*dt;
  6.     p1.x += p1.vx*dt;
  7.     p1.y += p1.vy*dt;
  8.    
  9.     p1.fx = 0;
  10.     p1.fy = gravity;
  11.    
  12.     p1.d = p1.dNear = 0;
  13.    
  14.     p1.vx = fastMax(-velCap, fastMin(p1.vx, velCap));
  15.     p1.vy = fastMax(-velCap, fastMin(p1.vy, velCap));
  16.    
  17.     if (p1.x < h) {
  18.         p1.vx -= (p1.x-(h-wallSpring*p1.vx))*wallDamp;
  19.     } else  if (p1.x > sw-h) {
  20.         p1.vx -= (p1.x-(sw-h-wallSpring*p1.vx))*wallDamp;
  21.     }
  22.     if (p1.y < h) {
  23.         p1.vy -= (p1.y-(h-wallSpring*p1.vy))*wallDamp;
  24.     } else  if (p1.y > sh-h) {
  25.         p1.vy -= (p1.y-(sh-h-wallSpring*p1.vy))*wallDamp;
  26.     }
  27.    
  28.     for (j in i+1...particles.length) {
  29.         var p2 = particles[j];
  30.        
  31.         var dx = p2.x-p1.x;
  32.         var dy = p2.y-p1.y;
  33.         var d = Math.sqrt(dx*dx+dy*dy);
  34.         if (d < h && d > 0) {
  35.             p1.springs.add(new Spring(particles[j], sCreateLen));
  36.         }
  37.     }
  38. }
  39.  
  40. for (p1 in particles) {
  41.     for (sp in p1.springs) {
  42.         var p2:Particle = sp.p;
  43.        
  44.         var dx = p2.x-p1.x;
  45.         var dy = p2.y-p1.y;
  46.         var d = fastSqrt(dx*dx+dy*dy);
  47.        
  48.         var fThreshold = sp.restLength*sBreakYield;
  49.         if (d > sp.restLength+fThreshold) {
  50.             sp.restLength += plasticity*(d-sp.restLength-fThreshold)*dt;
  51.         } else if (d < sp.restLength-fThreshold) {
  52.             sp.restLength -= plasticity*(sp.restLength-fThreshold-d)*dt;
  53.         }
  54.     }
  55. }
  56.  
  57. for (p1 in particles) {
  58.     for (sp in p1.springs) {
  59.         var p2:Particle = sp.p;
  60.         var lij = sp.restLength;
  61.        
  62.         if (lij > h) {
  63.             p1.springs.remove(sp);
  64.             continue;
  65.         }
  66.        
  67.         var dx = p2.x-p1.x;
  68.         var dy = p2.y-p1.y;
  69.         var d = fastSqrt(dx*dx+dy*dy);
  70.  
  71.         var f = kspring*(d-lij)/d;
  72.         var fx = dx*f;
  73.         var fy = dy*f;
  74.  
  75.         p1.vx += fx;
  76.         p1.vy += fy;
  77.         p2.vx -= fx;
  78.         p2.vy -= fy;
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement