Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- accelerate = ->
- for a in [0...size-4] by 4
- x1 = particles[a+0]
- y1 = particles[a+1]
- for b in [a+4...size] by 4
- x2 = particles[b+0]
- y2 = particles[b+1]
- xd = x2-x1
- yd = y2-y1
- l2 = xd*xd + yd*yd
- if l2 > nearest
- l = Math.sqrt(l2)
- xn = xd/l
- yn = yd/l
- acc = factor/l2
- xa = xn*acc
- ya = yn*acc
- particles[a+2] += xa
- particles[a+3] += ya
- particles[b+2] -= xa
- particles[b+3] -= ya
- return
- move = ->
- for i in [0...size] by 4
- x2 = particles[i+2]
- y2 = particles[i+3]
- xv = (x2 - particles[i+0])
- yv = (y2 - particles[i+1])
- l = Math.sqrt(xv*xv + yv*yv)
- if l > limit
- xv = (xv/l) * limit
- yv = (yv/l) * limit
- x = x2 + xv
- y = y2 + yv
- particles[i+0] = x - xv
- particles[i+1] = y - yv
- particles[i+2] = x
- particles[i+3] = y
- return
Add Comment
Please, Sign In to add comment