sketch-a-day/2019/sketch_191106a/sketch_191106a.pyde

99 wiersze
2.4 KiB
Python

# Baseado no L-System apresentado pela Tatasz na
# Noite de Processing
iterations = 5
# axiom = "F"
axiom = "HGF"
sentence = axiom
stroke_len = 200
rules = (
# ("F", "F-F++F-F"),
("F", "[+F]-F"),
("G", "[HG]HGF"),
("H", "F[-GH]+GH")
,)
a = 45
def setup():
size(700, 700)
strokeWeight(1)
noFill()
generate(iterations)
def draw():
global a
background(220, 220, 200)
translate(width / 2, height / 3)
global a
angle = radians(a)
plot(angle)
# if a <= 180:
# saveFrame("sketch###.png")
# print a
# a += 2.5
def generate(n):
global stroke_len, sentence
for _ in range(n):
stroke_len *= 0.5
nextSentence = ""
for c in sentence:
found = False
for c_a, c_b in rules:
if c == c_a:
found = True
nextSentence += c_b
break
if not found:
nextSentence += c
sentence = nextSentence
def plot(angle):
for c in sentence:
if c == "F":
stroke(200, 0, 0)
rect(0, 0, stroke_len/2, -stroke_len)
translate(0, -stroke_len)
# ellipse(0, 0, 10, 10)
elif c == "G":
stroke(0, 0, 200)
rect(0, 0, stroke_len/2, -stroke_len)
translate(0, -stroke_len)
elif c == "H":
stroke(0, 200, 0)
rect(0, 0, stroke_len/2, -stroke_len)
translate(0, -stroke_len)
elif c == "+":
rotate(angle)
elif c == "-":
rotate(-angle)
elif c == "[":
pushMatrix()
elif c == "]":
popMatrix()
def keyPressed():
global a
if keyCode == LEFT:
a -= 5
if keyCode == RIGHT:
a += 5
if key == 's':
saveFrame("####.png")
def settings():
""" print markdown to add at the sketch-a-day page"""
from os import path
global SKETCH_NAME, OUTPUT
SKETCH_NAME = path.basename(sketchPath())
OUTPUT = ".png"
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())
)