From 3abda08a46b7da614e260d02fbc3d3d89e28cf8c Mon Sep 17 00:00:00 2001 From: Alexandre B A Villares <3694604+villares@users.noreply.github.com> Date: Tue, 18 May 2021 17:54:17 -0300 Subject: [PATCH] Create sketch_2021_05_18c.pyde --- .../sketch_2021_05_18c.pyde | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 2021/sketch_2021_05_18c/sketch_2021_05_18c.pyde diff --git a/2021/sketch_2021_05_18c/sketch_2021_05_18c.pyde b/2021/sketch_2021_05_18c/sketch_2021_05_18c.pyde new file mode 100644 index 00000000..a4efa88c --- /dev/null +++ b/2021/sketch_2021_05_18c/sketch_2021_05_18c.pyde @@ -0,0 +1,54 @@ +from itertools import product +from random import sample + + +def setup(): + global grid, elements + size(700, 700) + grid = list(product(range(100, width, 125), repeat=2)) + elements = generate() + +def generate(): + elements = [] + points = set() + while len(points) < 24: + a, b = sample(grid, 2) + if a not in points and b not in points: + points.add(a) + points.add(b) + elements.append(Element(a, b)) + return elements + +def draw(): + background(240) + for e in elements: + e.display() + +def keyPressed(): + if key == 's': + saveFrame(str(frameCount) + '.png') + elements[:] = generate() + +class Element: + + def __init__(self, a, b): + self.p1 = PVector(*a) + self.p2 = PVector(*b) + n = 16 + divs = lambda i: PVector.lerp(self.p1, self.p2, i / float(n)) + self.points = [divs(i) for i in range(n)] + [self.p2] + + def display(self): + for p in self.points : + for e in reversed(elements): + if e == self: + break + for ep in e.points: + d = dist(p.x, p.y, ep.x, ep.y) + if d <= 125: + stroke(0, 0, d, 155 - d) + line(p.x, p.y, ep.x, ep.y) + fill(0) + noStroke() + circle(p.x, p.y, 4) +