kopia lustrzana https://github.com/villares/sketch-a-day
57 wiersze
1.6 KiB
Python
57 wiersze
1.6 KiB
Python
"""
|
|
sketch 55 180224 - Alexandre B A Villares
|
|
https://abav.lugaralgum.com/sketch-a-day
|
|
"""
|
|
|
|
CEL_SIZE = 25
|
|
HALF_CEL = CEL_SIZE / 2
|
|
ANG = 0
|
|
|
|
def setup():
|
|
global ROWS, COLS # filas e colunas
|
|
size(400, 400)
|
|
ROWS, COLS = int(height / CEL_SIZE), int(width / CEL_SIZE)
|
|
noFill()
|
|
strokeWeight(3)
|
|
frameRate(10)
|
|
|
|
|
|
def draw():
|
|
global ANG
|
|
background(100)
|
|
for r in range(ROWS):
|
|
for c in range(COLS):
|
|
with pushMatrix():
|
|
translate(HALF_CEL + c * CEL_SIZE,
|
|
HALF_CEL + r * CEL_SIZE)
|
|
rotate(ANG*c*r/10)
|
|
stroke(ANG*100 % 255, r * 15 % 255, c * 17 % 255)
|
|
arrow(0, 0, 0, 50,
|
|
tail_func=ellipse, tail_size=20 )
|
|
print 50 * sin(ANG/5), 50* cos(ANG/5)
|
|
ANG += 0.0001
|
|
|
|
def arrow(x1, y1, x2, y2, shorter=0, head=None,
|
|
tail_func=None, tail_size=None):
|
|
"""
|
|
O código para fazer as setas, dois pares (x, y),
|
|
um parâmetro de encurtamento: shorter
|
|
e para o tamanho da cabeça da seta: head
|
|
"""
|
|
L = dist(x1, y1, x2, y2)
|
|
if not head:
|
|
head = max(L / 10, 10)
|
|
with pushMatrix():
|
|
translate(x1, y1)
|
|
angle = atan2(x1 - x2, y2 - y1)
|
|
rotate(angle)
|
|
offset = shorter / 2
|
|
strokeCap(ROUND)
|
|
line(0, L - offset, -head / 3, L - offset - head)
|
|
line(0, L - offset, head / 3, L - offset - head)
|
|
strokeCap(SQUARE)
|
|
line(0, offset, 0, L - offset)
|
|
|
|
if tail_func:
|
|
if not tail_size: tail_size = head
|
|
tail_func(0, 0, tail_size, tail_size) |