sketch-a-day/sketch_180206a/sketch_180206a.pyde

63 wiersze
2.0 KiB
Python

"""
sketch 37 180206b - Alexandre B A Villares
https://abav.lugaralgum.com/sketch-a-day
"""
from __future__ import division, unicode_literals
CONFETI = []
SIZE = 15
TEXTO = """carnahacking vem aí""" # ainda não usei este texto...
def settings():
#global fundo
#fundo = loadImage("p.jpg")
#size(fundo.width, fundo.height)
size(500, 500) # comment out se for usar com fundo
def setup():
noStroke()
font = createFont("GaroaHackerClubeBold.otf", 24);
textFont(font)
textAlign(CENTER, CENTER) # Alinhamento horizontal e vertical
textSize(38) # Tamanho do texto
for _ in range(3200):
CONFETI.append(([random(width), # X
random(height+20)], # Y
random(TWO_PI), # screen plane rotation
random(TWO_PI), # "Z" rotation
color(random(256), random(256), random(256)) # color
))
def draw():
#background(fundo)
background(0) # comment out se for usar o fundo
text(TEXTO, width/2, height/2);
for pos, rot1, rot2, color_ in CONFETI:
with pushMatrix():
x, y = pos
maxDist = width/2
dis = dist(x, y, mouseX, mouseY)
ang = atan2(y - mouseY, x - mouseX)
if (dis < maxDist):
dd = map(dis, 0, maxDist, 1, 0)
dd = pow(dd, 0.9) * dis * 2
x += cos(ang) * dd
y += sin(ang) * dd
translate(x, y)
rotate(rot1 + float(frameCount / 7))
s = sin(rot2 + float(frameCount / 11))
fill(color_)
ellipse(0, 0, SIZE, SIZE * s)
pos[1] += 1 + random(0, 2) * s # update y (pos[1])
if y > height + 20:
pos[1] = -20
#if dist(x, y, mouseX, mouseY) < 100:
# pos[1] += random(-5, 0)
# pos[0] += random(-5, 5)
if frameCount<300 and not frameCount % 3: saveFrame("###.tga")