Last active
February 1, 2016 14:57
-
-
Save 2bt/6645475350f680f7c876 to your computer and use it in GitHub Desktop.
Revisions
-
2bt revised this gist
Jan 28, 2016 . 1 changed file with 9 additions and 6 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,7 @@ local G = love.graphics math.randomseed(os.time()) parts = {} function find_partner(p) @@ -12,10 +14,11 @@ function find_partner(p) end for i = 1, 5000 do local p = { x = math.random(-100, 100), y = math.random(-100, 100), c = 0 } p.ox = p.x p.oy = p.y @@ -33,7 +36,7 @@ function love.update() p.ox = p.x p.oy = p.y if p.c == 0 then p.friend = find_partner(p) p.enemy = find_partner(p) p.c = math.random(5000) @@ -61,12 +64,13 @@ function love.update() p.x = p.x + vx * 0.5 p.y = p.y + vy * 0.5 end end for _ = 1, 300 do love.update() end function love.draw() G.translate(400, 300) G.setColor(255, 255, 255, 15) -- love.graphics.setBlendMode("add") @@ -77,11 +81,10 @@ function love.draw() G.translate(p.x, p.y) G.rotate(rot) G.scale(l, 1) G.circle("fill", 0, 0, 3, 4) G.pop() -- G.circle("fill", p.x, p.y, 3, 3) -- G.line(p.x, p.y, p.friend.x, p.friend.y) end end -
2bt created this gist
Jan 28, 2016 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,87 @@ local G = love.graphics parts = {} function find_partner(p) while true do local q = parts[math.random(#parts)] if q ~= p and q ~= p.friend and q ~= p.enemy then return q end end end for i = 1, 10000 do local p = { x = math.random(-100, 100), y = math.random(-100, 100), } p.ox = p.x p.oy = p.y parts[i] = p end function love.update() for _, p in ipairs(parts) do local vx = p.x - p.ox local vy = p.y - p.oy p.ox = p.x p.oy = p.y if not p.c or p.c == 0 then p.friend = find_partner(p) p.enemy = find_partner(p) p.c = math.random(5000) end p.c = p.c - 1 local l = ((p.x^2+p.y^2) * 0.0001) ^ 0.5 p.x = p.x * (1 - l * 0.001) p.y = p.y * (1 - l * 0.001) local dx = p.friend.x - p.x local dy = p.friend.y - p.y local l = 4.3 / (10 + (dx*dx + dy*dy) ^ 0.5) p.x = p.x + dx * l p.y = p.y + dy * l local dx = p.enemy.x - p.x local dy = p.enemy.y - p.y local l = -0.8 / (10 + (dx*dx + dy*dy) ^ 0.5) p.x = p.x + dx * l p.y = p.y + dy * l p.x = p.x + vx * 0.5 p.y = p.y + vy * 0.5 end end function love.draw() G.translate(400, 300) G.setColor(255, 255, 255, 5) -- love.graphics.setBlendMode("add") for _, p in ipairs(parts) do local rot = math.atan2(p.y - p.oy, p.x - p.ox) local l = math.max(1, ((p.x - p.ox) ^ 2 + (p.y - p.oy) ^ 2) ^ 0.4) G.push() G.translate(p.x, p.y) G.rotate(rot) G.scale(l, 1) G.circle("fill", 0, 0, 2, 6) G.pop() -- G.circle("fill", p.x, p.y, 3, 3) -- G.line(p.x, p.y, p.friend.x, p.friend.y) end end