2019-06-28 02:56:34 +00:00
|
|
|
# Alexandre B A Villares - https://abav.lugaralgum.com/sketch-a-day
|
|
|
|
|
# variable radius
|
|
|
|
|
|
|
|
|
|
add_library('VideoExport')
|
|
|
|
|
|
|
|
|
|
from random import choice, shuffle, sample
|
|
|
|
|
from itertools import product, permutations, combinations
|
|
|
|
|
from forms import b_poly_arc_augmented
|
|
|
|
|
from line_geometry import *
|
|
|
|
|
|
|
|
|
|
NUM_POINTS = 5
|
|
|
|
|
BORDER = 100
|
|
|
|
|
SIZE = 50
|
|
|
|
|
RDS = 50
|
|
|
|
|
save_frame = False
|
|
|
|
|
ensambles = []
|
|
|
|
|
st = 0
|
|
|
|
|
|
|
|
|
|
def setup():
|
|
|
|
|
size(600, 600, P3D)
|
|
|
|
|
smooth(16)
|
|
|
|
|
ensambles[:] = create_points()
|
|
|
|
|
frameRate(15)
|
|
|
|
|
# Video Export
|
|
|
|
|
global ve
|
|
|
|
|
ve = VideoExport(this)
|
|
|
|
|
ve.setFrameRate(15)
|
|
|
|
|
ve.startMovie()
|
|
|
|
|
|
|
|
|
|
def create_points():
|
|
|
|
|
""" non intersecting poly """
|
|
|
|
|
global grid
|
|
|
|
|
good = False
|
|
|
|
|
grid = list(product(range(BORDER, width - BORDER + 1, SIZE),
|
|
|
|
|
range(BORDER, height - BORDER + 1, SIZE)))
|
|
|
|
|
points = sample(grid, NUM_POINTS)
|
|
|
|
|
# points = []
|
|
|
|
|
# n = 14
|
|
|
|
|
# a = TWO_PI / n
|
|
|
|
|
# R = width / 2
|
|
|
|
|
# for i in range(n):
|
|
|
|
|
# x = R + sin(a * i) * R * .5
|
|
|
|
|
# y = R + cos(a * i) * R * .5
|
|
|
|
|
# points.append((x, y))
|
|
|
|
|
|
|
|
|
|
combos = set(permutations(points, NUM_POINTS))
|
|
|
|
|
for pts in combos:
|
|
|
|
|
for _ in range(len(pts)-1):
|
|
|
|
|
pts = pts[1:] + (pts[0],)
|
|
|
|
|
combos.discard(pts)
|
|
|
|
|
combos.discard(pts[::-1])
|
|
|
|
|
ens = []
|
|
|
|
|
for pts in combos:
|
|
|
|
|
if not intersecting(pts):
|
|
|
|
|
ens.append(pts)
|
|
|
|
|
# ens = list(pts)
|
|
|
|
|
print(len(ens))
|
|
|
|
|
shuffle(ens)
|
|
|
|
|
return ens
|
|
|
|
|
|
|
|
|
|
def draw():
|
|
|
|
|
ortho()
|
|
|
|
|
background(250, 250, 240)
|
|
|
|
|
|
|
|
|
|
# st = 0
|
|
|
|
|
# scale(1/4.)
|
|
|
|
|
# for j in range(4):
|
|
|
|
|
# for i in range(4):
|
|
|
|
|
# pushMatrix()
|
|
|
|
|
# translate(width * i, height * j)
|
|
|
|
|
# translate(height/2, width/2)
|
|
|
|
|
# rotateY(frameCount / 100.)
|
|
|
|
|
# # rotateX((frameCount + i * 10 + j * 10) / 50.)
|
|
|
|
|
# translate(-height/2, -width/2)
|
|
|
|
|
# if ensambles:
|
|
|
|
|
# draw_ensamble(ensambles[st])
|
|
|
|
|
# st = (st + 1) % len(ensambles)
|
|
|
|
|
# popMatrix()
|
|
|
|
|
translate(height/2, width/2)
|
|
|
|
|
rotateY(frameCount / 100.)
|
|
|
|
|
translate(-height/2, -width/2)
|
|
|
|
|
if ensambles:
|
|
|
|
|
draw_ensamble(ensambles[st]) # variable radius
|
|
|
|
|
if save_frame:
|
|
|
|
|
ve.saveFrame()
|
|
|
|
|
if (frameCount - frame_start) / 100. > TWO_PI:
|
|
|
|
|
ve.endMovie()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def draw_ensamble(pts):
|
|
|
|
|
noFill()
|
|
|
|
|
stroke(0)
|
|
|
|
|
strokeWeight(4)
|
|
|
|
|
translate(0, 0, -8 * 10)
|
|
|
|
|
for i in range(8):
|
|
|
|
|
# colorMode(HSB)
|
|
|
|
|
strokeWeight(2 + i) # * 1.5)
|
|
|
|
|
translate(0, 0, 20)
|
|
|
|
|
b_poly_arc_augmented(pts, [100] * NUM_POINTS, l=i)
|
|
|
|
|
# for p in pts:
|
|
|
|
|
# ellipse(p[0], p[1], i * 10 , i * 10)
|
|
|
|
|
|
|
|
|
|
def keyPressed():
|
|
|
|
|
global st, save_frame, frame_start
|
|
|
|
|
if key == "p":
|
|
|
|
|
saveFrame("####.png")
|
|
|
|
|
if key == " ":
|
|
|
|
|
ensambles[:] = create_points()
|
|
|
|
|
st = 0
|
|
|
|
|
if key == "e":
|
|
|
|
|
ve.endMovie()
|
|
|
|
|
if key == "m":
|
|
|
|
|
st = (st + 1) % len(ensambles)
|
|
|
|
|
if key == "s":
|
|
|
|
|
frame_start = frameCount
|
|
|
|
|
save_frame = not save_frame
|
2019-06-29 14:41:48 +00:00
|
|
|
println("save frame: {}".format(save_frame))
|
2019-06-28 02:56:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def settings():
|
|
|
|
|
""" print markdown to add at the sketc-a-day page"""
|
|
|
|
|
from os import path
|
2019-06-29 14:41:48 +00:00
|
|
|
global SKETCH_NAME, OUTPUT
|
2019-06-28 02:56:34 +00:00
|
|
|
SKETCH_NAME = path.basename(sketchPath())
|
|
|
|
|
OUTPUT = ".png"
|
|
|
|
|
println(
|
|
|
|
|
"""
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
[{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())
|
|
|
|
|
)
|