sketch-a-day/2019/sketch_190702a/sketch_190702a.pyde

48 wiersze
1.2 KiB
Python

# Alexandre B A Villares - https://abav.lugaralgum.com/sketch-a-day
# A simple grid deformed by the mouse
def setup():
size(500, 500)
smooth()
for i in range(-9, 10):
for j in range(-9, 10):
Point(i, j)
def draw():
background(240, 240, 200)
translate(width / 2, height /2 )
for p in Point.grid.values():
p.plot()
class Point():
grid = dict()
nbr = ((-1, 0), (1, 0), (0, -1), (0, 1))
def __init__(self, i, j):
self.i = i
self.j = j
self.grid[(i, j)] = self
self.space = random(45, 55)
def place(self):
x, y = self.i * self.space, self.j * self.space
mx, my = mouseX - width / 2, mouseY - height / 2
a = self.space / sqrt(1 + dist(x, y, mx, my)/100)
return (self.i * a, self.j * a)
def plot(self):
stroke(0)
for oi, oj in self.nbr:
nbr_ij = (self.i + oi, self.j + oj)
other = self.grid.get(nbr_ij)
if other:
ox, oy = other.place()
sx, sy = self.place()
mx, my = (ox + sx) / 2., (oy + sy) / 2.
line(mx, my, sx, sy)