diff --git a/2019/sketch_190521a/0031.png b/2019/sketch_190521a/0031.png new file mode 100644 index 00000000..a47ecee7 Binary files /dev/null and b/2019/sketch_190521a/0031.png differ diff --git a/2019/sketch_190521a/0118.png b/2019/sketch_190521a/0118.png new file mode 100644 index 00000000..eec963db Binary files /dev/null and b/2019/sketch_190521a/0118.png differ diff --git a/2019/sketch_190521a/gif_exporter.py b/2019/sketch_190521a/gif_exporter.py new file mode 100644 index 00000000..51c431df --- /dev/null +++ b/2019/sketch_190521a/gif_exporter.py @@ -0,0 +1,40 @@ +""" +Alexandre B A Villares http://abav.lugaralgum.com - GPL v3 + +A helper for the Processing gifAnimation library https://github.com/extrapixel/gif-animation/tree/3.0 +Download from https://github.com/villares/processing-play/blob/master/export_GIF/unzip_and_move_to_libraries_GifAnimation.zip +This helper was inspired by an example by Art Simon https://github.com/APCSPrinciples/AnimatedGIF/ + +# add at the start of your sketch: + add_library('gifAnimation') + from gif_exporter import gif_export +# add at the end of draw(): + gif_export(GifMaker) +""" + +def gif_export(GifMaker, # gets a reference to the library + filename="exported", # .gif will be added + repeat=0, # 0 makes it an "endless" animation + quality=255, # quality range 0 - 255 + delay=200, # this is quick + frames=0, # 0 will stop on keyPressed or frameCount >= 100000 + finish=False): # force stop + global gifExporter + try: + gifExporter + except NameError: + gifExporter = GifMaker(this, filename + ".gif") + gifExporter.setRepeat(repeat) + gifExporter.setQuality(quality) + gifExporter.setDelay(delay) + + gifExporter.addFrame() + + if frames == 0: + if keyPressed and key == "e": + finish = True + + if finish: + gifExporter.finish() + print("gif saved") + exit() diff --git a/2019/sketch_190521a/sketch_190521a.pyde b/2019/sketch_190521a/sketch_190521a.pyde new file mode 100644 index 00000000..05c00b29 --- /dev/null +++ b/2019/sketch_190521a/sketch_190521a.pyde @@ -0,0 +1,81 @@ +# Alexandre B A Villares - https://abav.lugaralgum.com/sketch-a-day +# More explorations of lines in grids + +from random import shuffle +from itertools import product, combinations, permutations, combinations_with_replacement +from gif_exporter import gif_export +add_library('GifAnimation') + +space = 40 +num_lines = 5 +position = 0 + + +def setup(): + global line_combos, W, H, position, num + size(600, 600) + frameRate(5) + rectMode(CENTER) + strokeWeight(1) + # grid = product(range(-1, 1), repeat=2) # 2X2 + grid = product(range(-1, 2), repeat=2) # 3X3 + # grid = product(range(-2, 2), repeat=2) # 4X4 + lines = combinations(grid, 2) + short_lines = [] + for l in lines: + (x0, y0), (x1, y1) = l[0], l[1] + if dist(x0, y0, x1, y1) <= sqrt(2): + short_lines.append(l) + print(len(short_lines)) + line_combos = list(combinations(short_lines, num_lines)) + shuffle(line_combos) + num = len(line_combos) + W, H = (width - space) / space, (height - space) / space + print(W, H) + + +def draw(): + global position + colorMode(RGB) + background(240) + fill(0) + textSize(24) + text(str(num), space, height - space/4) + i = position + for y in range(H): + for x in range(W): + if i < len(line_combos): + pushMatrix() + translate(space + space * x, space + space * y) + draw_combo(i) + popMatrix() + i += 1 + if i < len(line_combos): + # gif_export(GifMaker, SKETCH_NAME + "-" + str(num)) + position += W + +def draw_combo(i): + colorMode(RGB) + siz = space / 2 - 2 + for i, sl in enumerate(line_combos[i]): + colorMode(HSB) + # stroke(i * 32, 200, 200) + (x0, y0), (x1, y1) = sl[0], sl[1] + line(x0 * siz, y0 * siz, x1 * siz, y1 * siz) + +def keyPressed(): + if key == "s": + saveFrame("####.png") + +def settings(): + from os import path + global SKETCH_NAME + SKETCH_NAME = path.basename(sketchPath()) + OUTPUT = ".gif" + println( + """ +![{0}]({2}/{0}/{0}{1}) + +[{0}](https://github.com/villares/sketch-a-day/tree/master/{2}/{0}) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)] +""".format(SKETCH_NAME, OUTPUT, year()) + )