Advertisement
Guest User

Codify particle simulation / engine

a guest
Oct 27th, 2011
1,837
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.31 KB | None | 0 0
  1. p={}
  2. ps=1000
  3.  
  4. -- Use this function to perform your initial setup
  5. function setup()
  6.    print("Hello World!")
  7.    for i=0,ps do
  8.        p[i]= {x=math.random(WIDTH*10)/10,
  9. y=math.random(HEIGHT*10)/10, ox=0.0, oy=0.0, vx=math.random(20)-10,
  10. vy=math.random(20)-10}
  11.    end
  12. end
  13.  
  14. -- This function gets called once every frame
  15. function draw()
  16.    noSmooth()
  17.  
  18.    background(10,10,20)
  19.    fill(255,0,0)
  20.    stroke(223, 255, 0, 255)
  21.    strokeWidth(3)
  22.  
  23.    for i=0,ps do
  24.        p[i].ox= p[i].x
  25.        p[i].oy= p[i].y
  26.        p[i].x = p[i].x + p[i].vx
  27.        p[i].y = p[i].y + p[i].vy
  28.  
  29.  
  30.        if p[i].x<0 then
  31.            p[i].x=0
  32.            p[i].vx= -p[i].vx
  33.        end
  34.  
  35.        if p[i].y<0 then
  36.            p[i].y=0
  37.            p[i].vy= -p[i].vy
  38.        end
  39.  
  40.        if p[i].x>WIDTH then
  41.            p[i].x=WIDTH
  42.            p[i].vx= -p[i].vx
  43.        end
  44.  
  45.        if p[i].y>HEIGHT then
  46.            p[i].y=HEIGHT
  47.            p[i].vy= -p[i].vy
  48.        end
  49.  
  50.        p[i].vx = p[i].vx*0.98
  51.        p[i].vy = p[i].vy*0.98
  52.  
  53.        line(p[i].ox, p[i].oy, p[i].x, p[i].y)
  54.    end
  55. end
  56.  
  57. function touched(t)
  58.    a=5
  59.    for i=0,ps do
  60.        d= (p[i].x-t.x)*(p[i].x-t.x) + (p[i].y-t.y)*(p[i].y-t.y)
  61.        d= math.sqrt(d)
  62.        p[i].vx = p[i].vx - a/d*(p[i].x-t.x)
  63.        p[i].vy = p[i].vy - a/d*(p[i].y-t.y)
  64.  
  65.    end
  66. end
  67.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement