Alexandre B A Villares 2018-02-15 23:45:23 -02:00
rodzic 2cc3a495b3
commit b10cfcf544
3 zmienionych plików z 131 dodań i 1 usunięć

Wyświetl plik

@ -8,10 +8,17 @@ If you enjoy this, make a small donation [here](https://www.paypal.com/cgi-bin/w
----
![s046](s046/s046.png)
046: [code](https://github.com/villares/sketch-a-day/tree/master/s046) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)]
Yet more graphs
----
![s045](s045/s045.gif)
045: [code](https://github.com/villares/sketch-a-day/tree/master/s045) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)]
Yer more graphs
Yet more graphs
----

BIN
s046/s046.png 100644

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 194 KiB

123
s046/s046.pyde 100644
Wyświetl plik

@ -0,0 +1,123 @@
"""
sketch 46 180213 - Alexandre B A Villares
https://abav.lugaralgum.com/sketch-a-day
"""
LIST = []
SRINK = .50
OFFSET = .25
SIZE = 236 # base size
SAVE_FRAME = False
DRAW_F = rect
def setup():
size(512 + 200, 512 + 200)
rectMode(CENTER)
colorMode(HSB)
strokeWeight(2)
LIST.append(Cell())
def draw():
translate(width / 2, height / 2)
background(200)
for cell in LIST:
cell.update()
save_frame() # saves frame if SAVE_FRAME is set True
def keyPressed():
global SAVE_FRAME, DRAW_F, SRINK, OFFSET
if key == " ":
LIST[:] = [Cell()]
SRINK = .50
OFFSET = .25
if key == "r":
if DRAW_F == rect:
DRAW_F = ellipse
else:
DRAW_F = rect
SAVE_FRAME = True
class Cell():
def __init__(self, x=0, y=0, gen=0):
self.LIST = []
self.x, self.y = x, y
self.gen = gen
self.color = color(random(0, 200), 200, 200, 200)
def s(self): # size
return SIZE * (SRINK ** self.gen)
def update(self):
self.draw() # draws itself
if keyPressed:
self.divide() # will create new sub-cells
if not self.LIST:
# if no sub-cells, its a lead (para células sem sub-células)
# and if mouse is pressed inside it
if mousePressed and self.on_mouse():
self.divide() # will create new sub-cells
pass
# otherwise will recursively update sub-cells and draw a line to them
else:
for sub_cell in self.LIST:
sub_cell.update()
stroke(0)
line(self.x, self.y, sub_cell.x, sub_cell.y)
def draw(self):
noStroke()
fill(self.color)
DRAW_F(self.x, self.y, self.s(), self.s())
fill(0)
DRAW_F(self.x, self.y, 4, 4)
#text(str(self.gen), self.x, self.y)
def divide(self):
if self.gen < 6 and not keyPressed:
x, y = self.x, self.y
new_gen = self.gen + 1
o = self.s() * OFFSET * new_gen
self.LIST.append(Cell(x + o, y + o, gen=new_gen))
self.LIST.append(Cell(x + o, y - o, gen=new_gen))
self.LIST.append(Cell(x - o, y + o, gen=new_gen))
self.LIST.append(Cell(x - o, y - o, gen=new_gen))
#self.gen = new_gen
def on_mouse(self):
x, y = self.x + width / 2, self.y + height / 2
r = self.s() / 2
if (x - r < mouseX < x + r and
y - r < mouseY < y + r):
return True
def mouseDragged():
global SRINK, OFFSET
if keyPressed and keyCode == SHIFT:
if mouseX < 100:
SRINK = map(mouseY, 0, height, 0, 1)
if mouseY < 100:
OFFSET = map(mouseX, 0, width, 0, 1)
def mouseReleased():
global SAVE_FRAME
SAVE_FRAME = True
def save_frame():
global SAVE_FRAME
if SAVE_FRAME:
SAVE_FRAME = False
saveFrame("s46-######.tga")
def seta(x1, y1, x2, y2, encurta=0, head=5):
d = dist(x1, y1, x2, y2)
with pushMatrix():
translate(x2, y2)
angle = atan2(x1 - x2, y2 - y1)
rotate(angle)
offset = -encurta * .6
line(0, offset, 0, -d - offset)
line(0, offset, -head / 2, -head + offset)
line(0, offset, head / 2, -head + offset)