pico-8 cartridge // http://www.pico-8.com version 8 __lua__ --random moving points' distance visualization --take #2 by trasevol_dog --with repulsion between points and with the sides function _init() plt={[0]=1,2,4,9,10,10,7,7} plt={[0]=1,13,12,6,7,7} plt={[0]=1,13,12,11,10,7,7} pts={} for i=1,32 do add(pts,{ x=rnd(128), y=rnd(128), vx=0.5+rnd(1.5)*sgn(rnd(2)-1), vy=0.5+rnd(1.5)*sgn(rnd(2)-1) }) end end function _update() for p in all(pts) do p.vx=mid(p.vx,-8,8) p.vy=mid(p.vy,-8,8) p.x+=p.vx p.y+=p.vy if p.x<0 then p.vx*=-1 p.x=0 end if p.y>=128 then p.vy*=-1 p.y=127+0x.ffff end if p.y<0 then p.vy*=-1 p.y=0 end if p.x>=128 then p.vx*=-1 p.x=127+0x.ffff end p.vx*=0.95 p.vy*=0.95 p.vy+=0.2*(p.y<64 and 1 or -1)*(1-min(p.y,128-p.y)/64) p.vx+=0.2*(p.x<64 and 1 or -1)*(1-min(p.x,128-p.x)/64) end end function _draw() cls() for i=1,#pts do local p=pts[i] --pset(p.x,p.y,1) spr(0,p.x-4,p.y-4) for j=i+1,#pts do local p2=pts[j] local d=altsqr(p2.x-p.x)+altsqr(p2.y-p.y) if d