-
-
Notifications
You must be signed in to change notification settings - Fork 20
/
sketch_190511b.pyde
76 lines (67 loc) · 1.92 KB
/
sketch_190511b.pyde
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Alexandre B A Villares - https://abav.lugaralgum.com/sketch-a-day
# Quaternary combinations - Processing Python Mode
def setup():
size(700, 700)
rectMode(CENTER)
strokeWeight(1)
textSize(6)
textAlign(CENTER, BOTTOM)
def draw():
background(240)
margin = 10
order = 16 # for a grid with 256 positions
siz = (width - 2 * margin) / order
translate(margin, margin / 2)
grid(order, siz, draw_quats)
def grid(order, siz, func):
i = 0
for y in range(order):
for x in range(order):
pushMatrix()
translate(siz / 2 + x * siz, siz / 2 + y * siz)
func(to_base_four(i))
popMatrix()
i += 1
def draw_quats(quats):
noFill()
step = 4
for i, q in enumerate(quats[::-1]):
r_siz = 10 + i * step
radius = r_siz / 2 - step
if q == '1':
stroke(0, 0, 0)
rect(0, 0, r_siz, r_siz, radius)
elif q == '2':
stroke(0)
rect(0, 0, r_siz - step, r_siz + step, radius)
elif q == '3':
stroke(0)
rect(0, 0, r_siz + step, r_siz - step, radius)
# else q == '0' and nothing is drawn!
fill(0, 0, 200)
text(quats, 0, 25)
def to_base_four(num):
# convert to base 4 & pad to 4 digits
base = 4
BS = "0123"
result = ""
while num:
result += BS[num % base]
num //= base
while len(result) < 4:
result = result + "0"
return result[::-1]
def keyPressed():
if key == "s":
saveFrame(SKETCH_NAME + OUTPUT)
def settings():
from os import path
global SKETCH_NAME
SKETCH_NAME = path.basename(sketchPath())
OUTPUT = ".png"
println(
"""
![{0}](2019/{0}/{0}{1})
[{0}](https://github.com/villares/sketch-a-day/tree/master/2019/{0}) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)]
""".format(SKETCH_NAME, OUTPUT)
)